Electron 是用 JavaScript、HTML 和 CSS 构建跨平台桌面应用的框架,融合 Chromium 与 Node.js;其核心分主进程(管理窗口、系统 API)和渲染进程(网页界面),通过 IPC 通信;支持快速脚手架启动、文件对话框、打包、系统能力调用等,但存在体积大、内存高、安全敏感等约束。
Electron 是一个用 JavaScript、HTML 和 CSS 构建跨平台桌面应用的框架。它把 Chromium(浏览器内核)和 Node.js 打包进同一个运行时,让你能用 Web 技术写原生桌面程序,比如 VS Code、Slack、Figma 都是用它做的。
Electron 应用有两个关键角色:
main.js。两者通过 ipcMain 和 ipcRenderer 模块通信,不能直接共享变量或调用函数——这是安全设计,也避免崩溃扩散。
不需要从零配置,用官方脚手架最省事:
create-electro
n-app:npx create-electron-app@latest my-app
cd my-app,然后 npm start 就能弹出窗口src/index.html 写界面,改 src/main.js 控制窗口行为(比如设置宽高、是否可缩放、是否显示菜单)默认启动的是一个最小可用窗口,后续可加菜单栏、托盘图标、自动更新等能力。
很多功能看似“原生”,其实 Electron 都封装好了:
dialog.showOpenDialog()(主进程中),再通过 IPC 把路径传给渲染进程读取electron-packager 或更主流的 electron-builder,一条命令生成 macOS .app、Windows .exe、Linux .AppImageclipboard.writeText(),通知用 new Notification(),托盘用 Tray 类——全在主进程中操作注意:渲染进程默认禁用 Node.js 集成(出于安全),如需在页面 JS 中用 fs 等模块,得在 webPreferences 中开启 nodeIntegration: true,但更推荐用 IPC 调用主进程代理,更可控也更安全。
Electron 强大但不是万能的,几个现实约束得提前知道:
nodeIntegration,启用 contextIsolation,否则容易被 XSS 利用执行本地代码electron-updater 或自己对接服务器基本上就这些。它不复杂但容易忽略细节,适合已有 Web 开发经验、想快速落地桌面功能的团队或个人。