首页 > 其他分享 >Electron框架使用vue开发跨平台桌面工具应用-项目搭建

Electron框架使用vue开发跨平台桌面工具应用-项目搭建

时间:2024-11-15 09:58:15浏览次数:1  
标签:vue win 跨平台 Electron 托盘 label js 图标

一.环境准备

1.vue版本3.2.13
2.npm版本5.0.3
3.打包工具webpack

二.步骤

1.首先使用 vue create demoproject命令创建项目
2.在项目中使用命令 vue add electron-builder 这一部命令我是在vscode里面执行的,vscode使用的powershell对这个命令有限制,需要 执行set-ExecutionPolicy Unrestricted来允许。这一步,可能比较慢,建议更改npm源为国内镜像
3.执行npm install

三.使用vue来开发页面

1.确定使用vue+layui+elementui 并且使用路由,引入项目 默认生成的后台js是backgroud.js,里面创建了默认的窗口;
该动了APP.VUE用路由的方式来打开页面
2.确定前后台交互使用官方推荐的 预加载js的方式 即建立preload.js,开启nodejs支持和上下文隔离
image

四.遇到了哪些问题,如何解决的

1.preload.js找不到
需要preload.js和backgroud.js放同一个目录
2.npm run electron:serve 会提示 require 不支持的错误
这个是因为require不是webpack支持的es6模块语法,网上有很多的教程,并没有解决到点子上,真正的解决方式是修改打包配置
在vue.config.js里面加入这样的配置
image

五.项目优化

1.修改默认的菜单,在backgroud.js里面增加菜单设置,在创建主窗口的的时候加入
image

 /**
   * 添加自定义菜单
   */
  const menuTemplate = [
    {
      label: '文件', // 菜单名称
      submenu: [
        {
          label: '打开',
          accelerator: 'CmdOrCtrl+O',  // 快捷键
          click: () => {
            console.log('点击了打开');
            // 在这里实现打开文件的逻辑
          }
        },
        {
          label: '退出',
          accelerator: 'CmdOrCtrl+Q',
          click: () => {
            app.quit();
          }
        }
      ]
    },
    {
      label: '编辑',
      submenu: [
        {
          label: '撤销',
          accelerator: 'CmdOrCtrl+Z',
          role: 'undo'  // Electron 提供的一些默认角色,例如撤销、重做等
        },
        {
          label: '重做',
          accelerator: 'CmdOrCtrl+Y',
          role: 'redo'
        },
        {
          type: 'separator'  // 分隔符
        },
        {
          label: '复制',
          accelerator: 'CmdOrCtrl+C',
          role: 'copy'
        },
        {
          label: '粘贴',
          accelerator: 'CmdOrCtrl+V',
          role: 'paste'
        }
      ]
    },
    {
      label: '帮助',
      submenu: [
        {
          label: '关于',
          click: () => {
            console.log('显示关于信息');
          }
        }
      ]
    }
  ];

  // 创建菜单
  const menu = Menu.buildFromTemplate(menuTemplate);

  // 设置应用的菜单
  Menu.setApplicationMenu(menu);

2.关闭窗口,退出到托盘

 win.on('close', (event) => {
    if(!isQuitting){
      event.preventDefault(); // 阻止默认关闭行为
      //win.hide(); // 隐藏窗口
      dialog.showMessageBox(win, {
        type: 'question',
        buttons: ['退出', '隐藏到托盘'],
        title: '确认退出',
        message: '是否确定退出应用?',
      }).then(result => {
        if (result.response === 0) {  // 用户点击了 "退出"
          isQuitting = true;
          app.quit();  // 退出应用
        } else {  // 用户选择了 "隐藏到托盘"
          win.hide();  // 隐藏窗口
        }
      });
    }
  });
// 创建托盘图标
  let tray = new Tray(path.join(__dirname, 'favicon.ico')); // 设置托盘图标
  const contextMenu = Menu.buildFromTemplate([
    {
      label: '显示窗口',
      click: () => {
        win.show();  // 显示窗口
      },
    },
    {
      label: '退出',
      click: () => {
        isQuitting = true
        app.quit();  // 退出应用
      },
    },
  ]);

  tray.setContextMenu(contextMenu);  // 设置托盘右键菜单
  tray.setToolTip('这是一个托盘图标');  // 设置托盘的提示文本

  // 监听系统托盘图标的点击事件
  tray.on('click', () => {
    if (win.isVisible()) {
      win.hide();  // 如果窗口已显示,点击托盘图标时隐藏窗口
    } else {
      win.show();  // 如果窗口已隐藏,点击托盘图标时显示窗口
    }
  });

   // 退出时销毁托盘图标
   app.on('before-quit', () => {
    isQuitting = true;
    tray.destroy();
  });

六、后记

1.项目运行可以正常运行了,就是import的路径还有点问题,需要调整
2.准备写一个跨平台的sql导入工具

标签:vue,win,跨平台,Electron,托盘,label,js,图标
From: https://www.cnblogs.com/lovefoolself/p/18547419

相关文章

  • 【开题报告】基于Springboot+vue相机品牌在线商城(程序+源码+论文) 计算机毕业设计
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着电子商务的迅猛发展,越来越多的消费者倾向于在线购物,特别是在购买电子产品如相机这类高价值商品时。相机品牌在线商城作为电子商务的一个重要分支,......
  • 【开题报告】基于Springboot+vue智能汽车租赁系统的设计与实现(程序+源码+论文) 计算机
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着科技的飞速发展和城市化进程的加快,智能汽车已经成为未来交通的重要趋势。智能汽车不仅具备传统汽车的行驶功能,更融入了先进的物联网、大数据、人......
  • 基于SpringBoot+Vue的多媒体素材库设计与实现毕设(文档+源码)
    目录一、项目介绍二、开发环境三、功能介绍四、核心代码五、效果图六、源码获取:         大家好呀,我是一个混迹在java圈的码农。今天要和大家分享的是一款基于SpringBoot+Vue的多媒体素材库,项目源码请点击文章末尾联系我哦~目前有各类成品毕设JavaWeb SSM......
  • 基于SpringBoot+Vue的学生干部管理系统设计与实现毕设(文档+源码)
    目录一、项目介绍二、开发环境三、功能介绍四、核心代码五、效果图六、源码获取:         大家好呀,我是一个混迹在java圈的码农。今天要和大家分享的是一款基于SpringBoot+Vue的学生干部管理系统,项目源码请点击文章末尾联系我哦~目前有各类成品毕设JavaWeb......
  • 【开题报告】基于Springboot+vue幼儿园管理系统(程序+源码+论文) 计算机毕业设计
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着信息化技术的飞速发展和普及,各行各业都在积极探索数字化转型的道路,教育行业也不例外。幼儿园作为儿童启蒙教育的重要阶段,其管理效率和质量直接影......
  • SpringBoot+Vue前后端分离的高校图书管理与座位预约管理系统
    感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助更多的人2025最新毕业设计项目推荐-SSM篇2025最新毕业设计项目推荐-SpringBoot篇2025最新毕业设计项目推荐-小程序、uniapp篇-CSDN博客Java精品毕设实战案例推荐​高......
  • SpringBoot+Vue前后端分离的企业员工管理系统
    感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助更多的人2025最新毕业设计项目推荐-SSM篇2025最新毕业设计项目推荐-SpringBoot篇2025最新毕业设计项目推荐-小程序、uniapp篇-CSDN博客Java精品毕设实战案例推荐​企......
  • SpringBoot+Vue前后端分离的超市进销存管理系统
    感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助更多的人2025最新毕业设计项目推荐-SSM篇2025最新毕业设计项目推荐-SpringBoot篇2025最新毕业设计项目推荐-小程序、uniapp篇-CSDN博客Java精品毕设实战案例推荐​超......
  • 毕业设计_基于springboot+vue的学校赛事管理系统【前后端源码+SQL+可运行】【41015】
    毕业设计_基于springboot+vue的学校赛事管理系统【前后端源码+SQL+可运行】【41015】.zip下载地址:https://download.csdn.net/download/qq_24428851/89982585环境准备:JDK1.8+maven3.6+nodejs14+mysql5.6+redis技术栈后台:springboot+mybatisPlus+Shiro前台:vue+iview+Vu......
  • 毕业设计_基于springboot+vue的学校赛事管理系统【前后端源码+SQL+可运行】【41015】
    毕业设计_基于springboot+vue的学校赛事管理系统【前后端源码+SQL+可运行】【41015】.zip下载地址:https://download.csdn.net/download/qq_24428851/89982585环境准备:JDK1.8+maven3.6+nodejs14+mysql5.6+redis技术栈后台:springboot+mybatisPlus+Shiro前台:vue+iview+Vu......