首页 / Electron 入门教程 / Electron 简介与定位

Electron 入门教程

Electron 简介与定位

本教程共 45 篇 · 第 1 篇 · 更新于 2026-08-03

Electron桌面开发跨平台框架简介

1. Electron 简介与定位

本节目标

  • 弄清 Electron 是什么,以及它如何用网页技术封装桌面应用。
  • 理解 Chromium 加 Node.js 的技术栈,以及跨平台运行的原理。
  • 识别 Electron 适合的适用场景与不适合的场景。
  • 把 Electron 与 NW.js、Tauri、Flutter、原生方案做横向对比。
  • 知道有哪些知名桌面应用基于 Electron 构建。

你大概用过 VS Code、Discord 或者飞书。它们看起来是原生桌面软件,其实背后都跑着同一个框架:Electron。本章先把 Electron 是什么说清楚,再讲它适合做什么、不适合做什么,最后把它和几个常见方案摆在一起比一比。

1-1 一句话理解 Electron

Electron 是一个用网页技术写桌面程序的框架。你用 HTML 写界面、用 CSS 排版、用 JavaScript 写逻辑,最后打包成 Windows、macOS、Linux 三个平台都能跑的安装包。

它把 Chromium 和 Node.js 打包进同一个二进制文件里。Chromium 负责渲染网页,Node.js 负责调用系统能力。于是前端工程师不需要学 C++,也能做出带托盘、菜单、对话框的桌面应用。

1-2 技术栈:Chromium 加 Node.js

Electron 的内核由两部分组成。第一部分是 Chromium,也就是 Google Chrome 背后的开源渲染引擎。它负责把 HTML、CSS、JavaScript 画成你看到的窗口内容。

第二部分是 Node.js。它让程序能读写文件、发起网络请求、调用操作系统接口。普通网页因为安全限制做不到这些,而 Electron 借助 Node.js 把能力补齐了。

// 在主进程里,Node.js 能力随手可用
const fs = require('node:fs')
const path = require('node:path')

const data = fs.readFileSync(path.join(__dirname, 'config.json'), 'utf-8')
console.log('配置文件内容:', data)

提示:Electron v43.2.0 内嵌的是 Chromium 150.0.7871.129 与 Node.js 运行时。你本地装的系统 Node.js 只用于跑脚手架工具,最终用户并不需要自己装 Node。

1-3 跨平台到底意味着什么

写一次代码,三个平台都能用,这是 Electron 最大的卖点。但”跨平台”要分两层看。

界面层基本通用。窗口、按钮、布局都来自网页标准,三端表现一致。系统能力层则需要各平台单独处理,比如托盘图标在 Windows 和 macOS 的样式就不一样。

// 主进程:同一段菜单逻辑,macOS 需要单独处理应用菜单
const { Menu } = require('electron/main')

const template = [
  { label: '文件', submenu: [{ role: 'quit' }] }
]

if (process.platform === 'darwin') {
  // macOS 把菜单挂在屏幕顶部,其他平台挂在窗口内
  Menu.setApplicationMenu(Menu.buildFromTemplate(template))
}

好消息是,这些差异 Electron 大都封装好了。你需要关心的平台分支,通常只占很小一部分。

1-4 适用场景:什么时候该选它

Electron 适合这几类活儿:

  • 把现有 Web 应用搬上桌面,比如内部管理系统、聊天工具。
  • 界面复杂的工具类软件,比如编辑器、设计器、数据看板。
  • 团队以前端为主,不想为桌面端另养一支原生开发队伍。

它特别适合”界面复杂、系统交互不深”的应用。界面越像网页,Electron 的优势越明显。

1-5 不适合的场景

Electron 也有短板,主要是体积和内存。一个最小安装包往往也有几十 MB,因为要把 Chromium 打进去。多个窗口同时开,内存占用会比原生程序高。

所以对体积极度敏感、或者需要深度调用显卡和底层硬件的程序,原生方案更合适。另外纯后台服务、命令行工具也不需要 Electron。

1-6 和几个方案横向对比

市面上有不少桌面方案,定位和取舍各不相同。下面这张表帮你快速建立坐标系。

方案技术栈体积学习成本适合人群
ElectronChromium + Node.js低(前端即可)Web 工程师
NW.jsChromium + Node.jsWeb 工程师
Tauri系统 WebView + Rust中(需 Rust)愿学 Rust 的团队
FlutterDart 自绘引擎跨端统一 UI 团队
原生开发C++/Objective-C/C#专业桌面团队

NW.js 和 Electron 同源,都打包了 Chromium 与 Node.js。区别在于进程模型:NW.js 里网页和 Node 在同一个上下文,历史上默认开放 Node 给渲染进程;Electron 则把主进程与渲染进程严格分开,安全边界更清晰。

Tauri 走另一条路,它复用系统自带的 WebView,不打包浏览器内核,所以安装包很小。代价是你要写 Rust 来处理系统能力,前端能力也受限于系统 WebView 版本。

Flutter 用 Dart 直接画界面,不依赖浏览器,跨移动端与桌面端一套代码。但它不是网页技术栈,前端工程师需要重新学习。

1-7 谁在用 Electron

Electron 不是小众玩具。VS Code、Discord、Slack、飞书、WhatsApp 桌面端、Figma 桌面端、GitHub Desktop 都用它。这些产品的体量和用户量,足以证明它在工业级场景下的可靠性。

这也意味着你踩到的坑,大概率别人已经踩过并有了答案。社区文档、示例、第三方库都相当成熟。

1-8 版本节奏与跟进建议

Electron 每 8 周发布一个大版本,跟着 Chromium 每隔一个的偶数版本走。官方只维护最近三个稳定大版本,更老的分支连安全补丁都不再发。

所以”不追新”是有代价的:一旦你用的版本掉出这三个之外,就得自己扛安全风险。合理节奏是每隔一两个大版本升一次,升级前先读发布说明里的破坏性变更清单。

本教程基线锁定在 v43.2.0(2026-07-21 发布,内嵌 Chromium 150)。写代码时以这个版本的行为为准,遇到版本专属 API 再去官方文档按版本查。

1-9 常见误区

“Electron 应用都很卡”是流传最广的一句。早期确实有不少应用优化粗糙,但卡顿多半来自业务实现,而非框架本身,合理的懒加载和内存管理能显著改善。

“体积大就没法用”也站不住脚。几十 MB 对桌面软件并非不可接受,很多原生软件也不小。若体积真的敏感,可以评估 Tauri 这类轻量方案,但不必一开始就放弃 Electron 的生产力优势。

1-10 生态与社区资源

学 Electron 不必孤军奋战。官方文档(electronjs.org/docs)是最权威的参考,覆盖了从入门到每个 API 的细节。文档站顶部能切换版本,写代码时记得对准 v43。

社区里也有大量开源示例。electron-quick-start 是最精简的骨架,electron-api-demos 则把每个 API 都做成了可点开的演示,非常适合边看边抄。遇到报错,优先去 GitHub 的 issue 和 Stack Overflow 搜,多半已有现成答案。

中文资料方面,注意部分老教程基于 Electron 5、8 甚至更早版本,写法可能早已废弃。遇到冲突以官方最新文档为准,本教程也统一以 v43.2.0 为基线。

1-11 本章小结

Electron 用网页技术封装出桌面应用,核心是 Chromium 加 Node.js。它跨平台、上手快,适合界面丰富的中重型工具,但体积和内存偏大。

选型时把它和 NW.js、Tauri、Flutter、原生方案对比,按团队背景和体积要求做决定即可。下一章我们动手把环境准备好。

上一篇
已经是第一篇啦
下一篇
开发环境准备