当前位置:首页 > 技术分析 > 正文内容

Electron+Vue3+Vite搭建一个桌面应用

ruisui884个月前 (03-01)技术分析19

1. 现实问题

得益于 Vite 卓越的前端开发体验,越来越多的 Electron 项目也开始应用它来构建开发。翻阅各种社区资源可以发现很多基于 Vite 搭建的 Electron 开发模板,但都存在着一些共同的问题:

  • 配置相对复杂,繁琐
  • 需要辅助脚本来配合编译开发
  • 无法举一反三,自主选择前端框架(Vue、React 和 Svelte 等)
  • 无法保护源代码

electron-vite旨在解决这些问题,为 Electron 提供更快、更精简的开发体验。

这个脚手架虽然说的很厉害,但是还是有一些不足,比如对vue项目初始化时的配置不如官方的精细。还需要自己手动配置自己喜爱的开发方式。但是瑕不掩瑜,它依然是目前我认为搭建electron配置最少的方式了。

2. 开始

bash复制代码# npm
npm create @quick-start/electron
# yarn
yarn create @quick-start/electron
# pnpm
pnpm create @quick-start/electron

bash复制代码? Project name: … 
? Select a framework: ? vue
? Add TypeScript? … No / Yes
? Add Electron updater plugin? … No / Yes
? Enable Electron download mirror proxy? … No / Yes

Scaffolding project in ./...
Done.

接下来 npm install安装就可以了

3. 开发调试

script脚本中有两个比较像npm run start和npm run dev

  • start先打包成静态文件,再启动electron加载本地文件,预打包前的预览
  • dev先启动本地服务器,再启动electron加载服务页面,开发时使用
json复制代码{
  "name": "electron-app",
  "version": "1.0.0",
  "description": "An Electron application with Vue",
  "main": "./out/main/index.js",
  "author": "example.com",
  "homepage": "https://www.electronjs.org",
  "scripts": {
    "format": "prettier --write .",
    "lint": "eslint . --ext .js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts --fix",
    "start": "electron-vite preview",
    "dev": "electron-vite dev",
    "build": "electron-vite build",
    "postinstall": "electron-builder install-app-deps",
    "build:win": "npm run build && electron-builder --win --config",
    "build:mac": "npm run build && electron-builder --mac --config",
    "build:linux": "npm run build && electron-builder --linux --config"
  },
  "dependencies": {
    "@electron-toolkit/preload": "^2.0.0",
    "@electron-toolkit/utils": "^1.0.2",
    "electron-updater": "^5.3.0"
  },
  "devDependencies": {
    "@electron/notarize": "^1.2.3",
    "@rushstack/eslint-patch": "^1.3.0",
    "@vitejs/plugin-vue": "^4.2.3",
    "@vue/eslint-config-prettier": "^7.1.0",
    "electron": "^24.4.1",
    "electron-builder": "^23.6.0",
    "electron-vite": "^1.0.23",
    "eslint": "^8.42.0",
    "eslint-plugin-vue": "^9.14.1",
    "less": "^4.1.3",
    "prettier": "^2.8.8",
    "vite": "^4.3.9",
    "vue": "^3.3.4"
  }
}


执行npm run dev 会看到

4. 打包exe

执行npm run build:win就会开始打包,打包前会从github下载必要的3个资源文件,这三个文件虽然不大,但是大概率要下载失败,所以手动点击报错信息上的网址手动下载下来。

  • winCodeSign-2.6.0.7z
  • nsis-3.0.4.1.7z
  • nsis-resources-3.4.1.7z

下载下来以后,将他们拷贝到C:\Users\[your name]\AppData\Local\electron-builder\Cache目录下, 新建两个文件夹winCodeSign和nsis,将压缩包解压到对应的目录,结构如下

  • winCodeSign\winCodeSing-2.6.0
  • nsis\nsis-3.0.4.1
  • nsis\nsis-resources-3.4.0

然后再执行npm run build:win

bash复制代码 *  正在执行任务: npm run build:win 

> electron-app@1.0.0 build:win
> npm run build && electron-builder --win --config


> electron-app@1.0.0 build
> electron-vite build

vite v4.3.9 building for production...
? 2 modules transformed.
out/main/index.js  1.43 kB
? built in 147ms
vite v4.3.9 building for production...
? 1 modules transformed.
out/preload/index.js  0.42 kB
? built in 18ms
vite v4.3.9 building for production...
? 11 modules transformed.
../../out/renderer/index.html                   0.52 kB
../../out/renderer/assets/icons-e5112e1e.svg    9.06 kB
../../out/renderer/assets/index-4b0e6ae1.css    2.74 kB
../../out/renderer/assets/index-1a29896b.js   150.63 kB
? built in 1.25s
  ? electron-builder  version=23.6.0 os=10.0.22621
  ? loaded configuration  file=D:\leehoo2\electron-app\electron-builder.yml
  ? writing effective config  file=dist\builder-effective-config.yaml
  ? skipped dependencies rebuild  reason=npmRebuild is set to false
  ? packaging       platform=win32 arch=x64 electron=24.5.1 appOutDir=dist\win-unpacked
  ? building        target=nsis file=dist\electron-app-1.0.0-setup.exe archs=x64 oneClick=true perMachine=false
  ? building block map  blockMapFile=dist\electron-app-1.0.0-setup.exe.blockmap
 *  终端将被任务重用,按任意键关闭。 

打包后的exe文件就在项目的dist目录,双击后直接安装了,也没有提示安装目录等提示。

具体个性化的需求还需要自行查看官网进行调整。

扫描二维码推送至手机访问。

版权声明:本文由ruisui88发布,如需转载请注明出处。

本文链接:http://www.ruisui88.com/post/2391.html

分享给朋友:

“Electron+Vue3+Vite搭建一个桌面应用” 的相关文章

GitLab-合并请求

描述合并请求可用于在您对项目进行的其他人员之间交换代码,并轻松与他们讨论更改。合并请求的步骤步骤1-在创建新的合并请求之前,GitLab中应该有一个创建的分支。您可以参考本章来创建分支-步骤2-登录到您的GitLab帐户,然后转到“ 项目”部分下的项目 -步骤3-单击“ 合并请求”选项卡,然后单击“...

祸害阿里云宕机3小时的IO HANG究竟是什么?

本文来自微信公号“CSDN”(ID:CSDNnews),作者 | 王知无, 责编| 郭 芮。2019年3月3日凌晨,微博炸锅,有网友反映说阿里云疑似出现宕机,华北很多互联网公司受到暴击伤害,APP、网站全部瘫痪,我自己的朋友圈和微信群里也有好友反馈,刚刚从被窝被叫起来去修Bug,结果发现服务器登不上...

Vue实现动态路由

通常我们在vue项目中都是前端配置好路由的,但在一些项目中我们可能会遇到权限控制,这样我们就涉及到动态路由的设置了。动态路由设置一般有两种:(1)、简单的角色路由设置: 比如只涉及到管理员和普通用户的权限。通常直接在前端进行简单的角色权限设置(2)、复杂的路由权限设置: 比如OA系统、多种角色的权限...

一套代码,多端运行——使用Vue3开发兼容多平台的小程序

介绍Vue3发布已经有一段时间了,从目前来看,其生态还算可以,也已经有了各种组件库给予了支持,但是不管是Vue3还是Vue2都无法直接用来开发小程序,因此国内一些技术团队针对Vue开发了一些多端兼容运行的开发框架,今天来体验一下使用Taro来体验一下使用Vue3开发多平台运行的小程序,以便于兼容各大...

嵌入式实操——基于RT1170 使能SEMC配置SDRAM功能(八)

本文主要是通过迁移的思维,记录本人初次使用NXP MCUXpresso SDK API进行BSP开发MCUXpresso SDK SEMC API 接口链接  在MCUXpresso SDK 框架下提供了对SEMC DDR进行操作的接口。学习链接:https://community.nxp.com/...

一篇文章搞懂同步与异步、阻塞与非阻塞

要想掌握好Java NIO需要涉及了解同步与异步、阻塞与非阻塞,本文通过相关例子让你深入理解其本质@mikechen阻塞阻塞与非阻塞是对同一个线程来说的,在某个时刻,线程要么处于阻塞,要么处于非阻塞。阻塞调用是指调用结果返回之前,当前线程会被挂起,调用线程只有在得到结果之后才会返回。举一个例子:当一...