当前位置: 首页 > news >正文

Electron+Vite:实现electron + vue3 + ts + pinia + vite高效跨平台开发指南 - 指南

目标:electron + vue3 + ts + pinia + vite

简介

electron-vite 是一个新型构建工具,旨在为Electron提供更快、更精简的开发体验。它主要由五部分组成:

  • 一套构建指令,它使用Vite打包你的代码,并且它能够处理 Electron 的独特环境,包括Node.js和浏览器环境。

  • 集中配置主进程、渲染器和预加载脚本的 Vite 配置,并针对 Electron 的独特环境进行预配置。

  • 为渲染器提供快速模块热替换(HMR)支持,为主进程和预加载脚本提供热重载支持,极大地提高了开发效率。

  • 优化 Electron 主进程资源处理。

  • 使用 V8 字节码保护源代码。

electron-vite 快速、简单且功能强大,旨在开箱即用。

安装

前提条件

electron-vite 需要 Node.js 版本 20.19+, 22.12+ 和 Vite 版本 5.0+

npm i electron-vite -D

命令行界面

在安装了 electron-vite 的项目中,你可以直接使用 npx electron-vite 运行,也可以在 package.json 文件中添加 npm scripts:

{"scripts": {"start": "electron-vite preview", // 开启 Electron 程序预览生产构建"dev": "electron-vite dev", // 开启开发服务和 Electron 程序"prebuild": "electron-vite build" // 为生产构建代码}
}

你还可以指定其他 CLI 选项,例如 --outDir。 有关 CLI 选项的完整列表,可以在你的项目中运行 npx electron-vite -h

配置 electron-vite

当以命令行方式运行 electron-vite 时,electron-vite 将会自动尝试解析项目根目录下名为 electron.vite.config.js 的配置文件。最基本的配置文件如下所示:

// electron.vite.config.js
export default {main: {// vite config options},preload: {// vite config options},renderer: {// vite config options}
}

Electron 入口

当使用 electron-vite 打包代码时,Electron 应用程序的入口点应更改为输出目录中的主进程入口文件。默认的输出目录 outDir 为 out。你的 package.json 文件会是这样:

{"name": "electron-app","version": "1.0.0","main": "./out/main/index.js"
}

Electron 的工作目录将是输出目录,而不是你的源代码目录。因此在打包 Electron 应用程序时可以将源代码排除。

搭建第一个 electron-vite 项目

在命令行中运行以下命令:

npm

npm create @quick-start/electron@latest

yarn

yarn create @quick-start/electron

pnpm

pnpm create @quick-start/electron

然后按照提示操作即可!

✔ 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.

你还可以通过附加的命令行选项直接指定项目名称和你想要使用的模板。例如,要构建一个 Electron + Vue 项目,运行:

# npm 7+,需要添加额外的 --:
npm create @quick-start/electron@latest my-app -- --template vue
# yarn
yarn create @quick-start/electron my-app --template vue
# pnpm
pnpm create @quick-start/electron my-app --template vue

目前支持的模板预设如下:

JavaScriptTypeScript
vanillavanilla-ts
vuevue-ts
reactreact-ts
sveltesvelte-ts
solidsolid-ts

克隆模板

create-electron 是一个快速生成主流 Electron 框架基础模板的工具。你还可以用如 degit 之类的工具,使用 electron-vite-boilerplate 模板来搭建项目。

npx degit alex8088/electron-vite-boilerplate electron-app
cd electron-app
npm install
npm run dev

功能

Vite 支持

继承 Vite 的所有优点,使用方式与 Vite 相同。

完全构建

electron-vite 可以智能地为 Electron 的独特环境打包源代码。

  • 主进程和预加载脚本: 无论是在开发还是生产中,这些都会被打包成 CommonJS 模块,并在 Node.js 环境中运行。

  • 渲染器: 在开发过程中,electron-vite 会将 CommonJS / UMD 模块转换为 ES 模块以支持 HMR。在生产过程中,这些将被打包成 IIFE 模块,并在浏览器环境中运行。

集中配置和预设配置

当你使用 Vite 来打包你的 Electron 源代码时,项目结构可能是这样的:

├──main
│  ├──...
│  └──vite.config.js
├──preload
│  ├──...
│  └──vite.config.js
└──renderer├──...└──vite.config.js

而在 electron-vite 中,所有的 Vite 配置都合并到一个文件中。项目结构是这样的:

├──src/
│  ├──main
│  ├──preload
│  └──renderer
├──electron.vite.config.js
└──package.json

此外,electron-vite 内置了很多配置,如outDirtargetentryformatsexternal等,以此进行智能解析和配置检查。

渲染进程 HMR

得益于 Vite 极快的 HMR 功能,我们在渲染器开发中使用它。它将极大地提高 Electron 的开发效率。

热重载

热重载是指在主进程或预加载脚本模块发生变化时快速重新构建并重启 Electron 程序。事实上,并不是真正的热重载,而是类似的。它为开发者带来了很好的开发体验。

资源处理

除了像 Vite 一样支持 web 应用程序中的 静态资源处理 之外,electron-vite 还优化了 Electron 主进程中的资源处理。

Electron 的 ESM 支持

Electron 从 Electron 28 开始支持 ES 模块。 electron-vite(自 2.0 起)同样支持使用 ESM 来开发和构建你的 Electron 应用程序。

源代码保护

electron-vite 使用 V8 字节码来保护源代码。

TypeScript 装饰器

electron-vite 创建了一个可选的由 swc 驱动 swcPlugin 插件来替代 Vite 的 esbuild 插件以支持 TypeScript 装饰器。

Worker Threads

electron-vite 为 Electron 主进程提供 Node.js 工作线程支持。

调试

非常容易在 IDE 中调试,例如 vscode 或 webstorm

http://www.jsqmd.com/news/104572/

相关文章:

  • 【收藏必备】一文搞懂RAG技术栈:大模型应用开发者的实战宝典
  • 情感语音合成技术前沿:EmotiVoice背后的科研力量
  • No2.1 信息系统工程错题集
  • 【必学收藏】RAG检索增强生成技术详解:从入门到实战,提升大模型应用能力
  • EmotiVoice在直播场景的应用尝试:虚拟主播实时发声
  • 已解决 Python 的execjs 调用js 报错:UnicodeEncodeError: ‘gbk‘ codec can‘t encode character ‘\xf1‘ in position
  • ShardingSphere 启动报错 “Unknown table ‘keywords‘ in information_schema“ 完整解决方案
  • Android之全局异常捕获UncaughtExceptionHandler
  • 结合大模型与EmotiVoice:实现上下文感知的情感语音输出
  • 开源项目精选:不容错过的高质量TTS模型EmotiVoice
  • python基础学习之Python 循环及函数
  • dify v1.11.1 离线安装本地插件怎么报错了?!
  • EmotiVoice技术深度解析:为何它成为情感化语音合成的新标杆?
  • 从入门到精通:CTF比赛100个解题思路全攻略,网络安全必备收藏
  • 从零到全栈AI工程师:大模型应用开发必备技能与学习路径(建议收藏)
  • 27、端口敲门与单包授权技术解析
  • IBM SPSS Amos 29 结构方程建模利器,向复杂数据的统计解决下载安装激活步骤
  • Java RESTful 接口开发 核心指南
  • 程序员必备基础:10种常见安全漏洞浅析
  • 精度论文:【Class Attention Transfer Based Knowledge Distillation】
  • 31、可视化 iptables 日志与攻击欺骗分析
  • 32、网络攻击模拟与防御脚本解析
  • 2025年专业展馆设计公司排行榜,新测评精选城市/军事展馆设 - myqiye
  • 亲测复盘:灵活用工平台避税实践分享
  • 2025年镍钛拉丝机服务商排行榜,老牌厂家与新型号测评推荐 - mypinpai
  • affine+docker+postgresql+备份数据库
  • 2025年老尹家海参深度解析:全产业链布局下的品质口碑与市场表现 - 十大品牌推荐
  • 2025年老尹家海参解析:品质工艺实力铸就卓越市场口碑优势 - 十大品牌推荐
  • 计算机毕业设计springboot大学生校园互助平台 基于 SpringBoot 的高校同学在线互助社区 面向大学生的“一站式”校园帮帮系统
  • 计算机毕业设计springboot基于vue的汽车销售网站系统 基于SpringBoot+Vue的线上整车销售与服务平台 SpringBoot与Vue融合的汽车电商营销系统