
electron将vue项目打包为桌面端应用详解以及遇到的问题
运行 执行 确保旧的
发布日期:2021-05-13 21:12:24
浏览次数:24
分类:精选文章
本文共 2686 字,大约阅读时间需要 8 分钟。
如何将Vue项目转换为Electron桌面应用?这对于刚接触Electron的大多数开发者来说,无疑是一个充满挑战却又充满回报的任务。在这个过程中,你可能会遇到许多意想不到的问题,我将基于自己对这些问题的解决实践,分享一个完整的开发流程。
一、安装开发环境
首先,需要 installations of Electron及其辅助工具。如果你还没有安装Electron和electron-packager,可以运行以下命令:
npm install electron --save-devnpm install electron-packager --save-dev
确认安装完成,可以通过运行以下命令查看版本号:
electron-packager -v && electron-packager ./ --version
安装完成后,Electron开发环境已经准备就绪,接下来可以开始下载项目源代码。
二、获取或创建项目源代码
克隆官方示例项目:
git clone https://github.com/electron/electron-quick-start
在项目根目录下,新建一个main.js
文件,将以下代码粘贴到其中:
//Modules to control application life and create native browser windowconst { app, BrowserWindow } = require('electron')const path = require('path')function createWindow() { // Create the browser window. const mainWindow = new BrowserWindow({ width: 800, height: 600, webPreferences: { preload: path.join(__dirname, 'preload.js') } }) // 和加载应用的主页 mainWindow.loadFile('../dist/index.html') // 打开开发者工具 mainWindow.webContents.openDevTools()}// 当Electron初始化完成后 readiness检查app.whenReady().then(() => { createWindow() // macOS情况下,重建窗口 app.on('activate', function() { if (BrowserWindow.getAllWindows().length === 0) { createWindow() } })})// 当所有窗口关闭时退出应用(除了macOS)app.on('window-all-closed', function() { if (process.platform !== 'darwin') { app.quit() }})
三、配置包 ModelRenderer
在项目根目录下的package.json
文件,添加两个操作命令:
{ "electron": "npm run build && electron build/electron.js", "packager": "electron-packager ./dist --platform=win32 --arch=x64 --out ./OutApp --electron-version 6.0.5 --overwrite --icon=./src/imgs/ico.ico"}
命令的名字可以自定义,只要能通过npm run [命令名]
运行即可。如我的项目中使用packager
命令打包:
npm run packager
四、文件结构的优化
将修改好的main.js
文件复制到dist
文件夹,并命名为electron.js
。此步骤非常关键,因为它直接关系到应用的入口文件配置。
在main.js
文件中,确保加载正确的入口文件:
// main.js loaded: '../dist/index.html'// electron.js loaded: 'index.html'
五、解决接口访问问题
在应用运行过程中,可能会遇到接口请求无法通过的问题。解决方法是在开发阶段通过alert
查看具体访问的地址,并根据实际需要进行配置。
六、优化窗口配置
如果希望应用在不同屏幕上自适应显示,可以在main.js
中添加以下代码:
let size = require('electron').screen.getPrimaryDisplay().workAreaSizelet width = parseInt(size.width)if (width >= 1920) { // 大屏幕优化 mainWindow = new BrowserWindow({ fullscreenable: true, fullscreen: true, autoHideMenuBar: true })} else { let height = parseInt(1080 * width / 1920 + 30) // 非大屏幕优化 mainWindow = new BrowserWindow({ width: width, height: height, fullscreenable: false, fullscreen: true, autoHideMenuBar: true })}
为了隐藏菜单栏,可以在main.js
中添加以下设置:
frame: false,
七、最终打包与部署
进入终级阶段,执行以下命令:
npm run buildnpm run packager
注意:在打包多次执行时,确保清空之前的输出文件夹,避免因文件冲突导致错误。
八、代码优化与维护
如果需要做代码修改或添加新功能,记得:
npm run build
重新编译npm run packager
重新打包OutApp
文件夹已清空发表评论
最新留言
不错!
[***.144.177.141]2025年04月15日 00时52分13秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Gradle实战四:Jenkins持续集成
2019-03-11
使用RestTemplate,显示请求信息,响应信息
2019-03-11
wgcloud运维监控系统错误:防篡改校验错误次数大于10次,不再上报数据
2019-03-11
为什么WGCLOUD安装完后,启动服务端打不开网页
2019-03-11
wgcloud网络监控出现负值
2019-03-11
ios 官方sample
2019-03-11
iOS 开发官方文档链接收集
2019-03-11
网易云面试(Android岗)之旅,差点被这些基础题绊了跟头。
2019-03-11
Android音视频开发之——音频非压缩编码和压缩编码
2019-03-11
linux学习笔记(四)基本用户管理与帮助命令
2019-03-11
小程序:防止父方法被子方法冒泡,使用catchtap
2019-03-11
vue报错 created hook错误
2019-03-11
单选框点击文字也能选中
2019-03-11
此主机支持Intel VT-x,但Intel VT-x 处于禁用状态。
2019-03-11
06-局部变量和全局变量
2019-03-11
12-面向对象1
2019-03-11
python基础总结 异常处理
2019-03-11
解决Vue源码运行错误
2019-03-11
HDU - 4109 Instrction Arrangement
2019-03-11
Lua websocket长连接
2019-03-11