一说到创建桌面应用,就不得不提及Electron和Tauri框架。这次给大家主要分享的是基于electron最新版本整合vite4.x构建vue3桌面端应用程序。
之前也有使用vite2+vue3+electronc创建桌面端项目,不过vue-cli-plugin-electron-builder脚手架插件构建的项目electron版本只有13.x。如今electron版本都到了24,显然不能再用之前的方法创建项目了。于是闲暇时间就捣鼓了electron24+vite4搭建桌面程序,中间踩了不少坑,现记录如下,希望对大家有所帮助~~
版本信息vite: ^4.3.2vue: ^3.2.47electron: ^24.4.0electron-builder: ^23.6.0创建vite4+vue3项目
vite官网提供了npm/yarn/pnpm等方式创建vue3项目。
(资料图片)
yarn create vite electron-vite4-vue3cd electron-vite4-vue3yarn installyarn dev
到这里一个简单的vite3+vue3项目就初始化好了。
安装Electron及相关依赖包基础vue3项目创建好后,需要在项目中安装一些electron依赖的包。如果在安装过程中卡住或失败,建议切换淘宝镜像,使用cnpm安装。
# 安装electronyarn add -D electron# 安装electron-builder 用于打包可安装exe程序和绿色版免安装exe程序yarn add -D electron-builder# 安装electron-devtools-installer 用于开发调试electronyarn add -D electron-devtools-installer
到这一步还需要安装一个构建electron程序的vite插件vite-plugin-electron
yarn add -D vite-plugin-electron
vite-plugin-electron:用于构建electron应用程序的vite插件。仅需少量配置,即可快速整合vite electron开发环境。
该插件集成了Vite和Electron,方便在渲染进程中使用Node API或者Electron API功能。
https://github.com/electron-vite/vite-plugin-electron
新建主进程文件在项目根目录新建background.js文件,编写主进程代码。
const { app, BrowserWindow } = require("electron")const { join } = require("path")// 屏蔽安全警告// ectron Security Warning (Insecure Content-Security-Policy)process.env["ELECTRON_DISABLE_SECURITY_WARNINGS"] = "true"const createWindow = () => { const win = new BrowserWindow({ // 窗口图标 icon: join(__dirname, "resource/shortcut.ico"), width: 800, height: 600, webPreferences: { // contextIsolation: false, // nodeIntegration: true, // preload: path.join(__dirname, "preload.js") } }) // 加载vue url视本地环境而定,如http://localhost:5173 // win.loadURL("http://localhost:3000") // development模式 if(process.env.VITE_DEV_SERVER_URL) { win.loadURL(process.env.VITE_DEV_SERVER_URL) // 开启调试台 win.webContents.openDevTools() }else { win.loadFile(join(__dirname, "dist/index.html")) }}app.whenReady().then(() => { createWindow() app.on("activate", () => { if (BrowserWindow.getAllWindows().length === 0) createWindow() })})app.on("window-all-closed", () => { if (process.platform !== "darwin") app.quit()})
接下来在vite.config.js中引入vite-plugin-electron插件,配置主进程入口,将electron和vite项目结合起来。
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: "background.js" }) ], /*开发服务器选项*/ server: { // 端口 port: 3000, }})
如果到这一步,运行yarn dev会报错,需要在package.json文件中加入"main": "background.js"入口配置。
如果报错如下,需要去掉package.json文件中 "type": "module" 配置。
完整的package.json配置如下
{ "name": "electron-vite4-vue3", "private": true, "version": "0.0.0", "description": "基于Electron24+Vite4.x+Vue3搭建项目框架", "author": "andy <282310962@qq.com>", "copyright": "MIT License(MIT) ©2023 Andy", "main": "background.js", "scripts": { "dev": "vite", "build": "vite build", "preview": "vite preview", "electron:serve": "vite --host", "electron:build": "vite build && electron-builder" }, "dependencies": { "vue": "^3.2.47" }, "devDependencies": { "@vitejs/plugin-vue": "^4.1.0", "electron": "^24.4.0", "electron-builder": "^23.6.0", "electron-devtools-installer": "^3.2.0", "vite": "^4.3.2", "vite-plugin-electron": "^0.11.2" }}
到这里,yarn dev启动项目,就能成功运行了。
electron-builder打包配置项目已经运行起来了,接下来就需要配置一些electron-builder打包脚本了。在项目根目录新建electron-builder.json配置文件。
话不多说,直接上代码:
{ "productName": "ElectronVite4Vue3", "appId": "cc.xiaoyan.electron-vite4-vue3", "copyright": "Copyright © 2023-present Andy", "compression": "maximum", "asar": true, // 打包格式压缩 "directories": { "output": "release/${version}" // 打包输出目录 }, // 配置extraResources后,electron-builder会在打包时将extraResources中指定的文件复制到打包后应用程序的根目录/resources文件夹下 /*"extraResources": [ { "from": "./resource", "to": "resource" } ],*/ "nsis": { "oneClick": false, "allowToChangeInstallationDirectory": true, "perMachine": true, "deleteAppDataOnUninstall": true, "createDesktopShortcut": true, "createStartMenuShortcut": true, "shortcutName": "ElectronVite4Vue3" }, "win": { "icon": "./resource/shortcut.ico", "artifactName": "${productName}-v${version}-${platform}-${arch}-setup.${ext}", "target": [ { "target": "nsis", "arch": ["ia32"] } ] }, "mac": { "icon": "./resource/shortcut.icns", "artifactName": "${productName}-v${version}-${platform}-${arch}-setup.${ext}" }, "linux": { "icon": "./resource", "artifactName": "${productName}-v${version}-${platform}-${arch}-setup.${ext}" }}
打包构建
yarn electron:build
图标等资源文件放在resource目录下
打包后显示的任务栏及程序图标。
打包程序图标配置
窗口图标配置
主进程中的__dirname变量指向当前主进程文件的目录。
至此一个简易版的electron24+vite4跨端项目就搭建好了,至于主进程/渲染进程之间的通讯后续再分享哈~~
-
基于Electron24+Vite4+Vue3搭建桌面端应用一说到创建桌面应用,就不得不提及Electron和Tauri框架。这次给大家主要分享的是基于electron最新版本整合v
-
海棠文旅企业共聚一堂,共话S2O三亚电音节商报全媒体讯(椰网 海拔新闻实习记者蔺宇新)为更好地推广S2O三亚电音节并展现海棠区各文旅企业品牌形象与
-
曹锟像银元价格(2023年05月26日)指股网财经网提供曹锟像银元价格(2023年05月26日),曹锟银元最新消息(2023年05月26日)。
-
“刷屏”北京,2023中关村论坛来了!|全球快播原标题:“刷屏”北京,2023中关村论坛来了!视频亮点频出、氛围感拉满……这是被2023中关村论坛刷屏的北京
-
赛尔号谱尼真身视频_赛尔号谱尼真身怎么打?_每日资讯1、1博尼的真身在塞尔的小游戏中是一个奇怪的存在,它有六条命。2、2 第一次的生活只能用不可避免的伎俩来
-
长沙警方通报一家五口命案:犯罪嫌疑人因欠高额债务与家人产生矛盾,杀害4人后自杀长沙警方通报一家五口命案:犯罪嫌疑人因欠高额债务与家人产生矛盾,杀害4人后自杀---长沙市公安局开福分局
-
即时:存储芯片板块飙涨近4.7%,吸金超90亿元,机构建议投资者控制仓位周五(5月26日),三大股指继续震荡整理。截至上午收盘,上证指数跌幅达0 14%,报3196 89点;深证成指和创业板指
-
高淳漆桥:无人机巡飞培训助力秸秆禁烧工作效率提升南京市高淳区于今年5月份全面启动夏季秸秆禁烧工作,为有效提升秸秆禁烧的宣传、管理、巡查等方面的工作效
-
这档主播职场综艺,在直播间很“上头”作者|廿四“主播一定是最后把关的人,就像报纸要发布最后一个通告,他就是那个签字的人,签完字才能在直播
-
数博会亮相,“科技+健康”引领未来生活方式|当前快报“2023数博会专业展”已于5月26日在贵阳国际会议展览中心开展。作为贵阳的城市名片,每一年的数博会都是全
-
天天新消息丨美国加州浸会大学DBA有双证吗?美国加州浸会大学国际博士(DBA)是有双证的。毕业学员拿:加州浸会大学工商管理博士学位证+中留服博士学历
-
【新视野】石嘴山工贸职业技术学院柔性引才 探索建设市域产教联合体5月24日,在石嘴山工贸职业技术学院举行的2023年柔性引进高层次人才聘用仪式上,通过柔性引进共聘用了65名
-
怡合达:5月12日组织现场参观活动,Carmignac Gestion、博时基金等多家机构参与-观焦点2023年5月26日怡合达(301029)发布公告称公司于2023年5月12日组织现场参观活动,CarmignacGestion、博时基
-
八旬老人迷路走失民警连夜搜寻找回 全球报资讯南宫市公安局八旬老人迷路走失民警连夜搜寻找回本报讯日前,南宫市公安局苏村派出所接到报警称,一名八旬老
-
天天热议:扬州经开区召开家庭教育工作推进会扬州网讯(记者史盼盼)为进一步完善家校社协同育人机制,提升经开区家庭教育工作指导服务水平,5月23日下
-
全球百事通!“打了视频电话确认是熟人”,又有人9秒被骗走245万元!如何识别?专家支招”眼见“不一定”为实“之后,怎么办?继此前“10分钟被AI换脸骗走430万元”事件引发关注之后,5月25日,4
-
全球信息:甘肃定西:“校中厂”“产业学院”等多形式深化职业教育改革图为会议现场。中新网甘肃新闻5月26日电(张婧)25日,职业教育服务乡村振兴研讨会暨产教融合对接会在甘肃省
-
珠海华发科技申请延迟反馈20亿元中票注册文件补充信息 世界看点该债券注金额20亿元,发行金额20亿元,发行期限为不超过5年,无担保,募资拟全部用于偿还发行人存量贷款。
-
富佳股份05月25日被沪股通减持5.22万股05月25日,富佳股份被沪股通减持5 22万股,最新持股量为39 15万股,占公司A股总股本的0 07%。
-
写春的现代诗自创4节高中水平_写春的现代诗 每日时讯1、再别康桥徐志摩轻轻的我走了,正如我轻轻的来;我轻轻的招手,作别西天的云彩。2、那河畔的金柳是夕阳中
-
当前热文:60余名德国企业家走进江西觅商机 投资合同总金额逾2亿美元60余名德国企业家走进江西觅商机投资合同总金额逾2亿美元
-
南方基金关于旗下部分基金增加蚂蚁基金为销售机构及开通相关业务的公告-当前要闻根据南方基金管理股份有限公司(简称“本公司”)与蚂蚁(杭州)基金销售有限公司(简称“蚂蚁基金”)签署
-
北京海外联谊会十届一次会员代表大会召开 世界讯息近日,北京海外联谊会十届一次会员代表大会在北京召开,来自60多个国家和地区的400余名港澳台和海外侨界代
-
光明区“智汇光明·才享荟”科研人才专项服务活动举办5月24日,2023年光明区“智汇光明·才享荟”科研人才专项服务活动在华强科技生态园展示中心举办。本次活动
-
怎么取消隐藏的单元格快捷键_怎么取消隐藏的单元格1、今天,我们将要学习的是WPS表格隐藏表格的方法。2、说到隐藏表格,其实是指隐藏单元格的数据,可以是单
-
世界视讯!石油经纪商PVM分析师TamasVarga石油经纪商PVM分析师TamasVarga:尽管沙特发表了相关言论,但我相信欧佩克将坚持4月份的计划,不会进一步削
-
当_动力火车|世界热消息想必现在有很多小伙伴对于当动力火车方面的知识都比较想要了解,那么今天小好小编就为大家收集了一些关于当
-
武汉科技大学资源与环境工程学院|当前观察1、武汉科技大学资源与环境工程学院。2、下设资源工程系、矿物加工与矿物材料系、安全与环境工程系、省部共
-
环球观点:诸葛亮为什么不敢出兵子午谷,奇袭长安城?有三大致命原因!诸葛亮为什么不敢出兵子午谷,奇袭长安城?有三大致命原因!,三国中,由诸葛亮辅佐的蜀汉却成为首个灭亡的
-
世界看热讯:特级体育老师线上线下开课 体育优秀课交流展示活动举行京报体育|记者李立5月25日下午,由北京中小学特级教师工作室主办的体育优秀课交流展示活动在北京171中学篮