Electron简介 #
一、什么是Electron #
Electron 是一个使用 JavaScript、HTML 和 CSS 构建跨平台桌面应用程序的开源框架。它由 GitHub 开发并维护,将 Chromium 和 Node.js 合并到同一个运行时环境中。
1.1 核心定位 #
text
Electron = Chromium + Node.js + Native APIs
Electron 的核心组成:
- Chromium:负责渲染网页内容,提供现代浏览器能力
- Node.js:提供文件系统访问、系统 API 等后端能力
- Native APIs:提供跨平台的原生桌面功能
1.2 核心特点 #
| 特点 | 说明 |
|---|---|
| 跨平台 | 一套代码,支持 Windows、macOS、Linux |
| Web 技术 | 使用 HTML、CSS、JavaScript 开发 |
| 丰富的 API | 提供原生桌面功能的 JavaScript API |
| 自动更新 | 支持应用自动更新机制 |
| 原生体验 | 可访问系统通知、托盘、菜单等 |
| 开源免费 | MIT 协议,完全开源 |
二、Electron架构 #
2.1 架构图 #
text
┌─────────────────────────────────────────────────────┐
│ Electron 应用 │
├─────────────────────────────────────────────────────┤
│ │
│ ┌─────────────┐ ┌─────────────┐ │
│ │ 主进程 │ IPC │ 渲染进程 │ │
│ │ (Main) │◄────────────►│ (Renderer) │ │
│ │ │ 通信 │ │ │
│ │ Node.js │ │ Chromium │ │
│ │ 环境 │ │ 环境 │ │
│ └─────────────┘ └─────────────┘ │
│ │ │ │
│ ▼ ▼ │
│ ┌─────────────┐ ┌─────────────┐ │
│ │ 原生 API │ │ Web 页面 │ │
│ │ 文件系统 │ │ HTML/CSS │ │
│ │ 系统集成 │ │ JavaScript │ │
│ └─────────────┘ └─────────────┘ │
│ │
└─────────────────────────────────────────────────────┘
2.2 主进程与渲染进程 #
| 进程类型 | 说明 | 运行环境 |
|---|---|---|
| 主进程 | 应用的入口点,管理应用生命周期 | Node.js 环境 |
| 渲染进程 | 显示 Web 页面,负责 UI 渲染 | Chromium 环境 |
2.3 进程间通信 #
javascript
// 渲染进程发送消息
ipcRenderer.send('channel-name', data);
// 主进程接收消息
ipcMain.on('channel-name', (event, data) => {
console.log(data);
});
三、发展历史 #
3.1 时间线 #
| 年份 | 事件 |
|---|---|
| 2013 | GitHub 启动 Atom Shell 项目 |
| 2015 | 项目更名为 Electron |
| 2016 | 发布 1.0 版本 |
| 2018 | 发布 3.0 版本 |
| 2020 | 发布 10.0 版本 |
| 2023 | 发布 28.0 版本 |
3.2 版本命名规则 #
Electron 遵循语义化版本规范:
text
主版本.次版本.补丁版本
例如:28.0.0
四、应用场景 #
4.1 适合的场景 #
开发工具
text
代码编辑器、IDE、终端工具、设计工具
效率工具
text
笔记应用、待办事项、时间管理、剪贴板管理
通讯工具
text
即时通讯、邮件客户端、团队协作
媒体工具
text
音乐播放器、视频播放器、图片编辑器
4.2 知名应用案例 #
| 应用 | 类型 | 说明 |
|---|---|---|
| VS Code | 开发工具 | 微软开源代码编辑器 |
| Slack | 通讯工具 | 企业协作平台 |
| Discord | 社交工具 | 游戏社区平台 |
| Figma | 设计工具 | 在线设计协作 |
| Notion | 效率工具 | 笔记与知识管理 |
| Postman | 开发工具 | API 测试工具 |
| Twitch | 媒体工具 | 直播平台客户端 |
| 通讯工具 | 即时通讯应用 |
五、与其他技术对比 #
5.1 Electron vs 原生开发 #
| 方面 | Electron | 原生开发 |
|---|---|---|
| 开发效率 | 高 | 低 |
| 学习曲线 | 平缓 | 陡峭 |
| 性能 | 中等 | 高 |
| 包体积 | 大 | 小 |
| 跨平台 | 优秀 | 需要分别开发 |
| 原生体验 | 良好 | 优秀 |
5.2 Electron vs Tauri #
| 方面 | Electron | Tauri |
|---|---|---|
| 渲染引擎 | Chromium | 系统 WebView |
| 运行时 | Node.js | Rust |
| 包体积 | 大(~150MB) | 小(~10MB) |
| 内存占用 | 高 | 低 |
| 生态成熟度 | 成熟 | 发展中 |
| 学习曲线 | 简单 | 较复杂 |
5.3 Electron vs Flutter #
| 方面 | Electron | Flutter |
|---|---|---|
| 技术栈 | Web 技术 | Dart 语言 |
| UI 一致性 | 依赖系统 | 自绘引擎 |
| 性能 | 中等 | 高 |
| 桌面支持 | 成熟 | 发展中 |
| 开发效率 | 高 | 高 |
六、优缺点分析 #
6.1 优点 #
1. 开发效率高
javascript
// 使用熟悉的 Web 技术快速开发
const { app, BrowserWindow } = require('electron');
function createWindow() {
const win = new BrowserWindow({ width: 800, height: 600 });
win.loadFile('index.html');
}
app.whenReady().then(createWindow);
2. 跨平台能力
text
一套代码,三端运行
- Windows
- macOS
- Linux
3. 丰富的生态系统
text
- npm 海量包支持
- 活跃的社区
- 完善的文档
- 大量开源项目参考
4. 强大的原生能力
javascript
// 访问文件系统
const fs = require('fs');
fs.readFileSync('/path/to/file');
// 系统对话框
dialog.showOpenDialog({ properties: ['openFile'] });
// 系统通知
new Notification({ title: 'Hello', body: 'World' }).show();
6.2 缺点 #
| 缺点 | 说明 | 解决方案 |
|---|---|---|
| 包体积大 | Chromium 导致体积较大 | 使用 ASAR 压缩、按需下载 |
| 内存占用高 | 多进程架构 | 优化渲染进程数量 |
| 启动速度 | 相比原生较慢 | 延迟加载、预加载优化 |
| 性能瓶颈 | 复杂计算性能有限 | 使用 Worker、原生模块 |
七、技术栈组成 #
7.1 核心技术 #
text
Electron 应用技术栈
├── 前端技术
│ ├── HTML5 页面结构
│ ├── CSS3 样式设计
│ └── JavaScript 交互逻辑
├── Node.js
│ ├── 文件系统 fs 模块
│ ├── 网络请求 http/https
│ ├── 子进程 child_process
│ └── 原生模块 C++ Addons
└── Electron API
├── app 应用生命周期
├── BrowserWindow 窗口管理
├── ipcMain/ipcRenderer 进程通信
├── Menu 菜单系统
├── Tray 系统托盘
└── dialog 对话框
7.2 常用工具库 #
| 工具 | 用途 |
|---|---|
| electron-builder | 应用打包 |
| electron-forge | 项目脚手架 |
| electron-store | 本地存储 |
| electron-updater | 自动更新 |
| electron-reload | 开发热重载 |
八、学习路线 #
8.1 学习路径 #
text
基础阶段
├── JavaScript 基础
├── Node.js 基础
├── HTML/CSS 基础
└── Electron 基础 API
进阶阶段
├── 进程间通信
├── 原生 API 使用
├── 界面开发
└── 数据存储
高级阶段
├── 性能优化
├── 安全加固
├── 原生模块开发
└── 打包与发布
8.2 前置知识要求 #
| 知识 | 要求程度 |
|---|---|
| JavaScript | 熟练 |
| HTML/CSS | 基础 |
| Node.js | 基础 |
| 命令行操作 | 基础 |
九、总结 #
9.1 核心要点 #
| 要点 | 说明 |
|---|---|
| 定义 | 使用 Web 技术构建跨平台桌面应用 |
| 核心 | Chromium + Node.js + Native APIs |
| 架构 | 主进程 + 渲染进程模型 |
| 优势 | 跨平台、开发效率高、生态丰富 |
9.2 下一步 #
现在你已经了解了 Electron 的基本概念,接下来让我们学习 环境搭建,搭建你的 Electron 开发环境!
最后更新:2026-03-28