什么是 Electron
Electron 是一个由 GitHub 开发的开源框架,用于使用 HTML、CSS 和 JavaScript 构建跨平台桌面应用程序。它结合了 Chromium(浏览器引擎) 和 Node.js(后端运行时),使开发者能够用 Web 技术开发原生桌面应用。
核心特点
✅ 跨平台:支持 Windows、macOS 和 Linux ✅ Web 技术栈:使用前端技术(HTML/CSS/JS)开发 ✅ 访问系统 API:通过 Node.js 调用本地文件、网络、硬件等 ✅ 丰富的生态:支持 React、Vue、Angular 等现代前端框架
Electron 的优缺点
✅ 优点
- 开发效率高:Web 技术栈,快速迭代
- 跨平台兼容:一套代码适配多系统
- 生态丰富:NPM 百万级模块可用
❌ 缺点
- 内存占用高:每个窗口运行 Chromium
- 包体积大:基础应用 100MB+
- 性能瓶颈:不适合计算密集型任务
核心架构
Electron 采用 主进程(Main Process) 和 渲染进程(Render Process) 的双进程模型:
为什么选择 Electron?
(1) 跨平台开发成本低
- 传统方式:Windows(C#)、macOS(Swift)、Linux(GTK/Qt)需分别开发
- Electron 方式:一套代码,三端运行
(2) 前端开发者友好
- 无需学习 C++/C#,直接用 JavaScript 开发
- 可复用 Web 组件(如 React、Vue 组件)
(3) 丰富的 API 支持
- 系统集成:文件系统、剪贴板、通知、托盘图标
- 硬件访问:摄像头、蓝牙、打印机
(4) 成熟的商业案例
- VS Code(微软)
- Slack(企业通信)
- Discord(游戏聊天)
- Figma(设计工具)
难点
- 调用nodeJs api
// 渲染进程(需启用 nodeIntegration)
const fs = require('fs')
fs.readFile('file.txt', 'utf-8', (err, data) => {
console.log(data)
})进程间通信// 主进程(main.js)
const { ipcMain } = require('electron')
ipcMain.on('msg-from-renderer', (event, arg) => {
console.log(arg) // 接收渲染进程消息
})
// 渲染进程(index.html)
const { ipcRenderer } = require('electron')
ipcRenderer.send('msg-from-renderer', 'Hello Main Process!')
@electron/remote