Vue使用electron生成桌面应用过程详解

 更新时间:2023年04月17日 08:51:43   作者:不可名状邵雅虎  
这篇文章主要介绍了Vue使用electron生成桌面应用过程,很想使用 electron 制作一个桌面应用,但是真的上手使用的时候才发现 electron 的坑实在是太多了,先将遇到的坑记录在这里,遇到一个记录一个

学习关键语句

使用electron打包vue项目

electron制作桌面应用

写在前面

很想使用 electron 制作一个桌面应用,但是真的上手使用的时候才发现 electron 的坑实在是太多了

先将遇到的坑记录在这里,遇到一个记录一个

  • 使用 9 以上版本的 vue-i18n 的项目打包成应用时会失败,本地运行没问题
  • 项目路径中有中文会打包失败

和 electron 相关的插件版本更替实在是是太快,并且版本之间还不一定能兼容,所以这篇文章中使用到的插件都会写死版本来保证一定可以打包成功

开始

项目开始

我们不从零开始,直接从之前的项目中拉一个文件来作为例子,你可以点击这里进行下载项目,不需要积分

值得一提的是,这篇文章不会提供完整的文件,你可以使用下载的项目开始学习

安装依赖

安装指定版本 此时日期为 2023-04-11

npm i electron@24.0.0 -D
npm i vite-plugin-electron@0.11.1 -D
npm i electron-builder@23.6.0 -D
npm i cross-env@7.0.3

针对项目由 vite 创建的 vue3 项目

修改 vite.config.ts

变动语句

vite.config.ts 变动

import electron from 'vite-plugin-electron'
electron({
    entry: "dist-electron/index.js"
})

放入语句

vite.config.ts 放入

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import electron from 'vite-plugin-electron'
// https://vitejs.dev/config/
export default defineConfig({
  plugins: [
    vue(),
    electron({
      entry: "dist-electron/index.js"
    })
  ],
})

修改完成后,会自动在项目根目录出现 dist-electron 文件夹,文件夹内有一个文件 index.js

如果没有自动出现,那就手动创建

修改 index.js

index.js

import { app, BrowserWindow } from 'electron'
import path from 'path'
// app 控制应用程序的事件生命周期。
// BrowserWindow 创建并控制浏览器窗口。
let win;
// 定义全局变量获取 窗口实例
const createWindow = () => {
    win = new BrowserWindow({
        webPreferences: {
            devTools: true,
            contextIsolation: false,
            nodeIntegration: true
            // 允许html页面上的javascipt代码访问nodejs 环境api代码的能力(与node集成的意思)
        }
    })
    if (process.env.NODE_ENV != 'development') {
        win.loadFile(path.join(__dirname, "../dist/index.html"));
    } else {
        // vite-plugin-electron@0.11.1版本使用以下
        win.loadURL(`${process.env['VITE_DEV_SERVER_URL']}`)
    }
}
//在Electron完成初始化时被触发
app.whenReady().then(createWindow)

修改 package.json

  • 删除 “type”: “module”
  • “name” 同级添加 “main”: “dist-electron/index.js”
  • ,将 script 中的 dev 指令修改为 cross-env NODE_DEV=development vite
  • 将 script 中的 build 指令修改为 vue-tsc --noEmit && vite build && electron-builder

将以下添加到 “name” 同级

  "build": {
    "appId": "com.electron.desktop",
    "productName": "electron",
    "asar": true,
    "copyright": "Copyright © 2023 electron",
    "directories": {
      "output": "release/"
    },
    "files": [
      "dist",
      "dist-electron"
    ],
    "mac": {
      "artifactName": "${productName}_${version}.${ext}",
      "target": [
        "dmg"
      ]
    },
    "win": {
      "target": [
        {
          "target": "nsis",
          "arch": [
            "x64"
          ]
        }
      ],
      "artifactName": "${productName}_${version}.${ext}"
    },
    "nsis": {
      "oneClick": false,
      "perMachine": false,
      "allowToChangeInstallationDirectory": true,
      "deleteAppDataOnUninstall": false
    },
    "publish": [
      {
        "provider": "generic",
        "url": "http://127.0.0.1:8086"
      }
    ],
    "releaseInfo": {
      "releaseNotes": "版本更新的具体内容"
    }
  }

本地测试

npm run dev

会自动打开

打包成exe文件

npm run build

输出在项目根目录下新建的文件夹 release 中,双击 exe 文件进行安装就可以打开了

到此这篇关于Vue使用electron生成桌面应用过程详解的文章就介绍到这了,更多相关Vue electron生成桌面应用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • vue2笔记 — vue-router路由懒加载的实现

    vue2笔记 — vue-router路由懒加载的实现

    本篇文章主要介绍了vue2笔记 — vue-router路由懒加载示例,实例分析了vue-router路由懒加载的实现,具有一定参考借鉴价值,需要的朋友可以参考下
    2017-03-03
  • Vue+Antv F2实现混合图表

    Vue+Antv F2实现混合图表

    这篇文章主要为大家详细介绍了Vue+Antv F2实现混合图表,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-04-04
  • Vue使用axios添加请求头方式

    Vue使用axios添加请求头方式

    这篇文章主要介绍了Vue使用axios添加请求头方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-06-06
  • vue3原始值响应方案及响应丢失问题解读

    vue3原始值响应方案及响应丢失问题解读

    这篇文章主要介绍了vue3原始值响应方案及响应丢失问题解读,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-04-04
  • 解决removeEventListener 无法清除监听的问题

    解决removeEventListener 无法清除监听的问题

    这篇文章主要介绍了解决removeEventListener 无法清除监听的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-10-10
  • 基于Vue实例生命周期(全面解析)

    基于Vue实例生命周期(全面解析)

    下面小编就为大家带来一篇基于Vue实例生命周期(全面解析)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-08-08
  • el-select绑定值遇到的问题小结

    el-select绑定值遇到的问题小结

    碰到一个问题,选择框的数据是后端传过来的,下拉框的数据也是后端传过来的,但是打开下拉框时,发现数据没有高亮,最后通过只要选择框v-model给的值和option的value绑定的值一致,就可以高亮,感兴趣的朋友一起看看吧
    2023-12-12
  • 巧用Vue.js+Vuex制作专门收藏微信公众号的app

    巧用Vue.js+Vuex制作专门收藏微信公众号的app

    这篇文章主要为大家详细介绍了vue自定义指令三步如何实现数据拉取更新,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-11-11
  • elementui源码学习仿写el-collapse示例

    elementui源码学习仿写el-collapse示例

    这篇文章主要为大家介绍了elementui源码学习之仿写el-collapse示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-12-12
  • Vue 集成 PDF.js 实现 PDF 预览和添加水印的步骤

    Vue 集成 PDF.js 实现 PDF 预览和添加水印的步骤

    这篇文章主要介绍了如何在 Vue 中集成 Mozilla/PDF.js ,实现自定义的 PDF 预览器,以及给被预览的 PDF 添加水印
    2021-01-01

最新评论