什么是 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) 的双进程模型:
| 进程 | 职责 | 示例 |
|---|---|---|
| 主进程 | 管理应用生命周期、窗口、系统 API(如文件访问) | app.on('ready') 启动窗口 |
| 渲染进程 | 运行前端代码(HTML/CSS/JS),每个窗口独立进程 | 渲染 UI、调用 DOM API |
| 通信方式 | 通过 IPC(进程间通信) 交换数据 | ipcMain 和 ipcRenderer |
为什么选择 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
todo List项目案例(github地址)




