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 媒体工具 直播平台客户端
WhatsApp 通讯工具 即时通讯应用

五、与其他技术对比 #

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