什么是 Electron
Electron 是 GitHub 2013 年推出的开源框架,让开发者用 HTML + CSS + JavaScript 构建跨平台桌面应用。核心 = Chromium + Node.js。
优势
- Web 技术栈:React / Vue / Angular 任意
- 跨平台:一套代码,Windows / macOS / Linux
- 完整 Node.js API:文件系统、子进程、网络
- 生态丰富:VSCode、Slack、Discord、Notion 都是 Electron
快速开始
环境要求
- Node.js 18+
- npm / yarn / pnpm
- 平台原生工具:Windows 需 Visual Studio Build Tools,macOS 需 Xcode CLT,Linux 需
libnss3等
创建项目
| |
修改 package.json:
| |
安装:
| |
package.json 会加:
| |
main.js(主进程)
| |
preload.js(预加载)
| |
index.html(渲染进程)
| |
启动
| |
打开开发者工具(DevTools):Ctrl + Shift + I
进程架构
| |
IPC 通信
方式 1:invoke / handle(推荐)
渲染进程:
| |
preload.js:
| |
主进程:
| |
方式 2:send / on(单向)
渲染进程:
| |
preload.js:
| |
主进程:
| |
主进程 API
菜单
| |
对话框
| |
系统托盘
| |
通知
| |
文件系统
主进程用 fs,渲染进程通过 IPC:
| |
渲染进程访问
完整框架(React / Vue)
| |
| |
文件结构
| |
打包分发
electron-builder
| |
package.json:
| |
| |
electron-forge(替代方案)
| |
安全最佳实践
必须开启
| |
关闭新窗口
| |
CSP
| |
自动更新
| |
| |
package.json:
| |
性能优化
- 开启 V8 缓存:
--js-flags="--max-old-space-size=4096" - 启用 lazy load:路由懒加载
- Web Worker 处理密集计算
- offscreen 渲染:截图 / 录屏
常见问题
启动白屏
通常是预加载脚本报错。检查 preload.js 路径和 contextBridge 用法。
require is not defined
渲染进程不能直接用 require,必须通过 preload.js 暴露。
跨域请求
主进程可以任意跨域;渲染进程需要用 IPC 转发到主进程发起请求。
macOS 签名
| |
下一步
- Tauri 2.x 实战,看 2020-05-15《Tauri 2.x 跨平台桌面应用》
- 桌面开发技术栈对比,看 2014-08-15《桌面开发技术栈对比》
参考资料
- Electron 官方:https://www.electronjs.org/
- Electron 文档:https://www.electronjs.org/docs/latest/
- electron-builder:https://www.electron.build/
- electron-forge:https://www.electronforge.io/
- Awesome Electron:https://github.com/sindresorhus/awesome-electron
