还有前端不知道Electron的?手把手教你把Vue项目打包成桌面程序
ztj100 2025-06-13 18:10 5 浏览 0 评论
今天遇到一个以前的前端同事 他突然微信问我winform 怎么写?
我当时一脸懵 问他你不是前端开发么怎么研究winform了?
他说公司要他做一个桌面程序,他说他不会,我说你干前端这么久了没听说过Electron么?
经过我一顿安利后,他总算打包成功了第一个版本,我就想在这也记录一下 Electron 怎么打包现有Vue项目吧
一、环境准备:先给电脑洗洗脚
# 安装Node.js(建议v16.20.2)
# 国内镜像配置(否则下载依赖要等到地老天荒)
npm config set registry https://registry.npmmirror.com
# 安装Electron(版本22.3.7)
npm install electron --save-dev
温馨提示:这一步要是卡成PPT,赶紧检查网络!建议直接下载Electron镜像包塞进缓存目录(路径:C:\Users\你的用户名\AppData\Local\electron\Cache)
二、Vue项目改造:给网页穿上盔甲
- 1. 打包静态文件
npm run build
- 这会生成dist文件夹,就像给你的Vue项目做了个全身SPA!
- 创建Electron的「说明书」main.js
const { app, BrowserWindow } = require('electron')
let win = null
function createWindow() {
win = new BrowserWindow({
width: 800,
height: 600,
webPreferences: {
nodeIntegration: true, // 允许Node.js混入
contextIsolation: false // 关闭安全隔离(开发阶段可开)
}
})
win.loadFile('dist/index.html') // 加载打包后的Vue
win.webContents.openDevTools() // 开发者工具随时待命
}
app.whenReady().then(createWindow)
这文件就像Electron的「大脑」,指挥着浏览器窗口怎么干活
- 修改package.json
{
"main": "main.js",
"scripts": {
"electron": "electron .",
"build": "vue-cli-service build"
}
}
重点:添加"electron": "electron .",以后只要npm run electron就能启动
三、打包实战:和Electron斗智斗勇
步骤1:启动内置服务器
npm install express --save-dev
新建server.js:
const express = require('express')
const app = express()
app.use(express.static('dist'))
app.listen(3000, () => console.log('Server running on port 3000'))
修改main.js加载本地服务器:
win.loadURL('http://localhost:3000')
步骤2:安装打包神器electron-builder
npm install electron-builder --save-dev
配置package.json:
{
"build": {
"appId": "com.yourcompany.app",
"productName": "我的神级应用",
"directories": {"output": "dist_electron"}
}
}
步骤3:执行打包命令
npm run build && electron-builder
常见翻车现场:
o 下载Electron失败:手动下载对应版本放到缓存目录(参考)
o 打包白屏:Vue路由模式要改成hash模式(参考)
o 缺少依赖包:手动下载winCodeSign等文件(参考)
四、进阶玩法:给应用加点料
自定义图标
在package.json添加:
"build": {
"win": {"icon": "public/icon.ico"}
}
打包成安装包
electron-builder --win --x64
生成dist_electron文件夹,里面就是安装包啦!
跨平台打包
# 打Mac包
electron-builder --mac
# 打Linux包
electron-builder --linux
五、血泪经验大放送
- 1. 版本兼容性
Electron和Node.js版本要像情侣一样般配,建议用nvm管理Node版本 - 2. 安全警告
生产环境务必设置contextIsolation: true,别学我瞎搞(参考) - 3. 内存泄漏
打包后内存占用飙升?试试--asar压缩(参考)
当你双击生成的.exe文件,看到自己写的Vue项目在桌面活蹦乱跳时——那种成就感,就像亲手造出了会动的乐高!
记住,每个报错都是编译器在和你玩捉迷藏,只要耐心排查,终能修成正果!
相关推荐
- 再说圆的面积-蒙特卡洛(蒙特卡洛方法求圆周率的matlab程序)
-
在微积分-圆的面积和周长(1)介绍微积分方法求解圆的面积,本文使用蒙特卡洛方法求解圆面积。...
- python创建分类器小结(pytorch分类数据集创建)
-
简介:分类是指利用数据的特性将其分成若干类型的过程。监督学习分类器就是用带标记的训练数据建立一个模型,然后对未知数据进行分类。...
- matplotlib——绘制散点图(matplotlib散点图颜色和图例)
-
绘制散点图不同条件(维度)之间的内在关联关系观察数据的离散聚合程度...
- python实现实时绘制数据(python如何绘制)
-
方法一importmatplotlib.pyplotaspltimportnumpyasnpimporttimefrommathimport*plt.ion()#...
- 简单学Python——matplotlib库3——绘制散点图
-
前面我们学习了用matplotlib绘制折线图,今天我们学习绘制散点图。其实简单的散点图与折线图的语法基本相同,只是作图函数由plot()变成了scatter()。下面就绘制一个散点图:import...
- 数据分析-相关性分析可视化(相关性分析数据处理)
-
前面介绍了相关性分析的原理、流程和常用的皮尔逊相关系数和斯皮尔曼相关系数,具体可以参考...
- 免费Python机器学习课程一:线性回归算法
-
学习线性回归的概念并从头开始在python中开发完整的线性回归算法最基本的机器学习算法必须是具有单个变量的线性回归算法。如今,可用的高级机器学习算法,库和技术如此之多,以至于线性回归似乎并不重要。但是...
- 用Python进行机器学习(2)之逻辑回归
-
前面介绍了线性回归,本次介绍的是逻辑回归。逻辑回归虽然名字里面带有“回归”两个字,但是它是一种分类算法,通常用于解决二分类问题,比如某个邮件是否是广告邮件,比如某个评价是否为正向的评价。逻辑回归也可以...
- 【Python机器学习系列】拟合和回归傻傻分不清?一文带你彻底搞懂
-
一、拟合和回归的区别拟合...
- 推荐2个十分好用的pandas数据探索分析神器
-
作者:俊欣来源:关于数据分析与可视化...
- 向量数据库:解锁大模型记忆的关键!选型指南+实战案例全解析
-
本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在...
- 用Python进行机器学习(11)-主成分分析PCA
-
我们在机器学习中有时候需要处理很多个参数,但是这些参数有时候彼此之间是有着各种关系的,这个时候我们就会想:是否可以找到一种方式来降低参数的个数呢?这就是今天我们要介绍的主成分分析,英文是Princip...
- 神经网络基础深度解析:从感知机到反向传播
-
本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在...
- Python实现基于机器学习的RFM模型
-
CDA数据分析师出品作者:CDALevelⅠ持证人岗位:数据分析师行业:大数据...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- idea eval reset (50)
- vue dispatch (70)
- update canceled (42)
- order by asc (53)
- spring gateway (67)
- 简单代码编程 贪吃蛇 (40)
- transforms.resize (33)
- redisson trylock (35)
- 卸载node (35)
- np.reshape (33)
- torch.arange (34)
- npm 源 (35)
- vue3 deep (35)
- win10 ssh (35)
- vue foreach (34)
- idea设置编码为utf8 (35)
- vue 数组添加元素 (34)
- std find (34)
- tablefield注解用途 (35)
- python str转json (34)
- java websocket客户端 (34)
- tensor.view (34)
- java jackson (34)
- vmware17pro最新密钥 (34)
- mysql单表最大数据量 (35)