您可以捐助,支持我们的公益事业。

1元 10元 50元





认证码:  验证码,看不清楚?请点击刷新验证码 必填



  求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Model Center 汽车系统工程   模型库  
会员   
   
LLM大模型与智能体开发实战
2026年1月17、24日 北京+线上
需求分析与管理
2026年1月22-23日 北京+线上
UAF与企业架构
2026年2月3-4日 北京+线上
     
   
 订阅
当 Vue 遇上 Electron 桌面应用框架
 
作者:小周
  71   次浏览      3 次
2026-1-10
 
编辑推荐:
本文详细讲解了如何将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

# 1. 给项目命名
# 2. 选择你要的配置

# 进入项目
cd 项目名
# 安装所需的依赖(插件)
pnpm i
# 启动项目
pnpm dev

2. Vite 创建

pnpm create vite


# 1. 给项目命名
# 2. 选择对应的框架语言(Vue)
# 3. 选择创建 vue 的方式(Official Vue Starter)
# 4. 选择你要的配置

# 进入项目目录
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, MenuBrowserWindow } from'electron';
import path from'path';

// 创建窗口
functioncreateWindow() {
const win = new BrowserWindow({
width1200,  // 打开的默认宽
height800,  // 打开的默认高
autoHideMenuBarfalse// 是否隐藏默认菜单
webPreferences: {
nodeIntegrationtrue,
contextIsolationfalse,
webSecurityfalse// 允许加载本地文件
    },
showfalse// 先不显示,等加载完成后再显示
  });

const appPath = app.getAppPath();
// 使用 loadFile,它会自动处理路径
  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();
  });
}

// 所有窗口关闭时退出(macOS 除外)
app.on('window-all-closed'() => {
if (process.platform !== 'darwin') {
    app.quit();
  }
});
// macOS 上点击 dock 图标时重新创建窗口
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预览
"electron:dev": "electron .",
// 64位的打包
"electron:build": "electron-builder",
// 32位的打包
"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 .开发预览、调试

pnpm electron:dev

图片

问题

报错!

Electron failed to install correctly, please delete node_modules/electron and try installing again

或卡在 node install.js 步骤长时间不动。

原因

这通常是由于 node_modules/electron 目录中的文件丢失或损坏导致程序无法正常执行。

解决

使用  electron-fix  自动修复

检查 electron 目录结构是否完整,自动下载缺失的二进制文件并放置到正确位置。

# 1. 全局安装 electron-fix 工具
pnpm i -g electron-fix


# 2. 在项目根目录执行修复
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  这个名称。

再次构建,就成功了!

pnpm electron:build

图片
图片

将下载的文件拷贝到下列对应的文件夹中:

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({ showfalse });
 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

   
71   次浏览       3 次
相关文章

整洁架构在前端的设计思想与应用实践
细说 Vue 响应式原理的 10 个细节!
前端性能精进之浏览器——呈现
从输入URL到Web页面呈现的全过程
相关文档

浅谈 Vue 3 响应式与组合式 API
35分钟掌握Angular核心概念
java-web-使用分层实现业务处理
HTML5的canvas绘图
相关课程

HTML 5 + CSS3 原理与开发应用
Web前端高级工程师必备技能实战
使用Vue.jS构建web应用实战
Vue大型项目开发实战

最新活动计划
企业架构助力业务与IT协作 1-17[在线]
LLM大模型与智能体开发实战 1-17[在线]
AI大模型编写高质量代码 1-14[在线]
AI原生应用的微服务架构 1-22[在线]
需求分析与管理 1-22[北京]
视觉大模型及其应用 1-30[在线]
UAF与企业架构 2-3[北京]
 
 
最新文章
整洁架构在前端的设计思想与应用实践
细说 Vue 响应式原理的 10 个细节!
前端性能精进之浏览器——呈现
VUE.JS组件化开发实践
深入理解JSCore
最新课程
HTML 5 + CSS3 原理与开发应用
Web前端高级工程师必备技能实战
Vue大型项目开发实战
React原理与实践
Vue.js进阶与案例实践
成功案例
中交集团 构建Web自动化测试框架
某著名电信公司 Vue.js进阶与案例
国电通网络技术 HTML5+CSS3 +web前端框
移动通信 移动互联网应用开发原理
某电力行 android开发平台最佳