| 编辑推荐: |
本文详细讲解了如何将Vue与Electron结合开发桌面应用,希望对您的学习有所帮助。
本文来自于卡元 Carain,由火龙果软件Alice编辑、推荐。
|
|
Electron 是什么?
Electron 是一个使用 JavaScript、HTML 和 CSS 构建桌面应用程序的框架。
嵌入 Chromium 和 Node.js 到 二进制的 Electron 允许您保持一个 JavaScript 代码代码库并创建 在Windows上运行的跨平台应用 macOS和Linux——不需要本地开发 经验。它基于MIT开源许可证,对商业和个人用途均免费。
官方网址
electron :
https://www.electronjs.org/zh/
electron-builder :
https://www.electron.build/
菜鸟教程 :
https://www.runoob.com/electron/electron-tutorial.html
w3cshools 教程 :
https://www.w3ccoo.com/electron/index.html
一、创建 Vue 项目
以下是创建 Vue 框架的步骤(项目我用的框架是 Vue3+Vite+JavaScript)
两种创建方式(任选其一):
1. Vue 版创建 (推荐)
pnpm create vue
cd 项目名
pnpm i
pnpm dev
|
2. Vite 创建
pnpm create vite
cd 项目名
pnpm i
pnpm dev
|
创建项目后,正常书写你的网页代码!!!
二、使用 Electron 框架打包
假设我的项目已经完成!
1. 安装 electron 依赖包
在项目安装 Electron 和 Electron-Builder 依赖包
# 在项目安装 Electron 和 Electron-Builder 依赖
pnpm i electron electron-builder --save-dev
|
2. 初始化项目
在项目根目录创建 electron-main.js 文件,内容如下:
import { app, Menu, BrowserWindow } from'electron';
import path from'path';
functioncreateWindow() {
const win = new BrowserWindow({
width: 1200,
height: 800,
autoHideMenuBar: false,
webPreferences: {
nodeIntegration: true,
contextIsolation: false,
webSecurity: false,
},
show: false,
});
const appPath = app.getAppPath();
win.loadFile(path.join(appPath,'dist','index.html'))
const systemLocale = app.getLocale()
const isChinese = systemLocale.startsWith('zh')
const template = isChinese ? getChineseMenu() : getEnglishMenu()
const menu = Menu.buildFromTemplate(template)
Menu.setApplicationMenu(menu)
win.once('ready-to-show', () => {
win.show();
});
}
app.on('window-all-closed', () => {
if (process.platform !== 'darwin') {
app.quit();
}
});
app.on('activate', () => {
if (BrowserWindow.getAllWindows().length === 0) {
createWindow();
}
});
app.on('ready', createWindow)
functiongetChineseMenu() {
return [
{
label: '文件',
submenu: [
{
label: '新建窗口',
accelerator: 'CmdOrCtrl+N',
click: () => {
}
},
{ type: 'separator' },
{
label: '退出',
accelerator: 'CmdOrCtrl+Q',
click: () => app.quit()
}
]
},
{
label: '编辑',
submenu: [
{ label: '撤销', role: 'undo' },
{ label: '重做', role: 'redo' },
{ type: 'separator' },
{ label: '剪切', role: 'cut' },
{ label: '复制', role: 'copy' },
{ label: '粘贴', role: 'paste' },
{ label: '全选', role: 'selectAll' }
]
},
{
label: '视图',
submenu: [
{ label: '刷新', role: 'reload' },
{ label: '开发者工具', role: 'toggleDevTools' },
{ type: 'separator' },
{ label: '重置缩放', role: 'resetZoom' },
{ label: '放大', role: 'zoomIn' },
{ label: '缩小', role: 'zoomOut' }
]
},
{
label: '窗口',
submenu: [
{ label: '最小化', role: 'minimize' },
{ label: '关闭', role: 'close' }
]
},
{
label: '帮助',
submenu: [
{
label: '关于',
click: () => {
}
}
]
}
]
}
|
3. 创建构建脚本&应用配置信息
修改 package.json 文件,添加以下内容:
{
"name": "vite-project",
"version": "0.0.0",
"private": true,
"type": "module",
"engines": {
"node": "^20.19.0 || >=22.12.0"
},
"scripts": {
"dev": "vite",
"build": "vite build",
"preview": "vite preview",
"electron:dev": "electron ."
"electron:build": "electron-builder"
},
"main":"electron-main.js",
"build":{
"appId": "com.example.app",
"productName": "测试应用",
"copyright": "Copyright © 2025",
"directories": {
"output": "release"
},
"files": [
"dist/**/*",
"electron-main.js",
"package.json"
],
"win": {
"icon":"public/favicon.ico",
"target": [
{
"target": "nsis",
"arch": ["x64"]
}
]
},
"nsis": {
"oneClick": false,
"allowToChangeInstallationDirectory": true
}
},
"dependencies": {
"vue": "^3.5.25"
},
"devDependencies": {
"@vitejs/plugin-vue": "^6.0.2",
"electron": "^39.2.7",
"electron-builder": "^26.0.12",
"vite": "^7.2.4",
"vite-plugin-vue-devtools": "^8.0.5"
}
}
|
解释 :
"electron:dev": "electron .",
"electron:build": "electron-builder",
"electron:build32":"electron-builder --win --ia32"
|
配置图标:
mac:icon.icons or icon.png 512 * 512
win:icon.ico or icon.png 256 * 256
linux:icon.png 256 * 256
4 .开发预览、调试
问题
报错!
Electron failed to install correctly, please delete node_modules/electron and try installing again
|
或卡在 node install.js 步骤长时间不动。
原因
这通常是由于 node_modules/electron 目录中的文件丢失或损坏导致程序无法正常执行。
解决
使用 electron-fix 自动修复
检查 electron 目录结构是否完整,自动下载缺失的二进制文件并放置到正确位置。
pnpm i -g electron-fix
electron-fix start
|
5. 打包,运行构建命令
(1)先打包网页;
(2)后打包 electron 应用包。
pnpm build
pnpm electron:build
|
在根目录里面有一个 release 文件夹:
1.win-unpascked 是直装包
2.“测试应用 Setip 0.0.0.exe”是刚刚打包好的安装包,点击就可安装!
3.安装完后,可以在桌面上看到图标,就可以打开即可!
注意事项:
1.依赖项: 确保项目中所有依赖项都已正确安装;
2.资源路径: 检查资源文件(如图片、配置文件等)的路径是否正确,因为打包后可能会改变文件结构;
3.跨平台兼容性: 如果计划支持多个平台,请确保代码和资源在不同平台上都能正常工作。
三、常见问题
各种依赖包下载:
https://registry.npmmirror.com/binary.html
1. 缺失 electron 安装包
下载链接 :
https://registry.npmmirror.com/binary.html?path=electron/
选择你的版本,我这里选择 electron-v39.2.7-win32-x64
打开 C:\Users\admin\AppData\Local\electron\Cache ,将你下载的压缩包放进去,如图所示:
2. 解决 electron 构建报错!
错误日志:
在对 electron 项目进行构建打包时,终端出现以下链接超时:
原因是 downloading 的时候卡在这里,导致 release 文件构建缺失!这也是下载慢的问题!
1.解决 winCodeSign-2.6.0.7z 的下载问题
(1)在 github 找到对应安装包并下载 build 所需要的 winCodeSign-2.6.0.7z
下载链接 :
https://github.com/electron-userland/electron-builder-binaries/releases/tag/winCodeSign-2.6.0
(2)下载之后找到: C:\Users\admin\AppData\Local\electron-builder\Cache\winCodeSign 目录,如果没有 winCodeSign 文件夹,需要自己创建一个 winCodeSign 文件夹。
并解压出来,放在 winCodeSign 文件夹里(注意:名字必须是 winCodeSign-2.6.0 ):
2. 解决 nsis-3.0.4.1.7z 的下载问题
重新构建,又出现了错误:
(1)下载 nsis-3.0.4.1 、 nsis-resources-3.4.1 的包
nsis-3.0.4.1 下载链接 :
https://github.com/electron-userland/electron-builder-binaries/releases/tag/nsis-3.0.4.1
nsis-resources-3.4.1 下载链接 :
https://github.com/electron-userland/electron-builder-binaries/releases/tag/nsis-resources-3.4.1
(2)下载好 nsis-3.0.4.1.7z 、 nsis-resources-3.4.1 包后,解压放在 nsis 文件夹里面(如果没有nsis文件夹就手动创建一个),且必须是 nsis-3.0.4.1 、 nsis-resources-3.4.1 这个名称。
再次构建,就成功了!
将下载的文件拷贝到下列对应的文件夹中:
Linux :$XDG_CACHE_HOME 或 ~/.cache/electron/
macOS :~/Library/Caches/electron/
Windows :~/AppData/Local/electron-builder/Cache
3.Electron 打包后白屏问题及解决方案
原因 :因为 loadURL 的地址是开启好了的服务地址,比如前端开启的端口默认是8080,那么地址应该写成 “http://localhost:8080/#/” ,或者写成用 nginx 开启好了的地址。
(1)检查资源路径
打包后,资源路径可能发生变化。建议使用 path.join 或 __dirname 确保路径正确。
const path = require('path');
mainWindow.loadFile(path.join(__dirname, 'index.html'));
|
(2)优化主进程加载时机
确保在主进程准备就绪后再创建窗口,并通过 ready-to-show 控制窗口显示。
app.whenReady().then(() => {
const mainWindow = new BrowserWindow({ show: false });
mainWindow.loadFile('index.html');
mainWindow.once('ready-to-show', () => {
mainWindow.show();
});
});
|
(3)检查打包配置
确认 electron-builder 或 electron-packager 的配置是否正确。例如:
- 确保 files 包含所有必要文件。
- 如果启用了 asar,检查资源是否能正确加载。
总-用到的文件资源
electron 安装包:
https://registry.npmmirror.com/binary.html?path=electron/
winCodeSign-2.6.0:
https://github.com/electron-userland/electron-builder-binaries/releases/tag/winCodeSign-2.6.0
nsis-3.0.4.1:
https://github.com/electron-userland/electron-builder-binaries/releases/tag/nsis-3.0.4.1
nsis-resources-3.4.1:
https://github.com/electron-userland/electron-builder-binaries/releases/tag/nsis-resources-3.4.1
|