谈谈我认为的"Electron为什么都喜欢用"

发表于 2026-04-21 846 字 5 min read

文章目录
Electron 体积大才不是缺点喵~那是大厂为了 UI 一致性和环境可控付出的合理代价,毕竟 WebView 方案把环境风险全甩给用户才是最坑的啦。技术选型就是这样,没有银弹只有 trade-off,最完美的方案往往用起来最痛苦呢喵~。

前言

最近跟朋友聊了一波跨端开发框架的选型问题,聊着聊着发现大家对 Electron 的理解还是有不少误区。正好看到 Electron 维护者 Felix Rieseberg 写的 Things people get wrong about Electron,结合自己的经验,整理一下我的看法。

Electron:大厂为什么爱用它

很多人觉得大厂用 Electron 是因为”前端多、招人便宜”。太表面了。

核心原因是:UI 表现稳定,且与 web 端一致。

大厂通常有 web 端和桌面端,用 Electron 做桌面端,UI 层代码高度复用,渲染结果一致。这不是”偷懒”,这是工程效率

体积大?Netflix 一小时 7GB,游戏更新动辄 300GB。100-300MB 的安装包对大厂来说根本不是事。不差这点流量和带宽。

Electron 不是万能的

一旦涉及到原生能力,Electron 作者本身也建议你用 C++、Objective-C 或 Rust 来写。

Felix Rieseberg 原话:

Electron 的核心理念在于,你可以将 Web 应用与任何你想要编写的原生代码配对——具体来说是 C++、Objective-C 或 Rust。

1Password 大部分核心代码完全用 Rust 编写,UI 层才交给 Electron。

Electron 的正确打开方式:HTML 负责 UI,原生代码负责重活。

Flutter:最完美但最难用

Flutter 是最完美的跨端类原生方案。 性能、UI 稳定性、平台兼容性三项满分。自绘引擎,像素级一致,全平台覆盖。

代价是 Dart 反人类。 比 Kotlin 难用得多,某些地方比 Rust 都麻烦。生态跟 JavaScript/TypeScript 比差太远。

最好的方案,但不是最实用的方案。

WebView 方案:本质上是不稳的

WebView 方案(比如 TauriElectrobun 这类)的思路是不自带浏览器内核,用系统 WebView 渲染 UI。体积小、启动快,听起来很美好。

但这是个复杂的决策。

做网站时,三平台 UI 表现差异可以忽略不计。但做客户端没办法——用户的 WebView 环境可能缺失,可能版本老旧,可能有 bug。

Safari 某些版本有 bug,做 web 的都知道,这是常态。 CSS 的、JS 的、渲染的,各种姿势。macOS 上用 WebView 方案底层就是 WebKit,这些 bug 你都得吃下来。Windows 上 WebView2 好一些,但版本不受你控制。

Felix Rieseberg 也提到了,当年 Slack 用 macOS 原生 WebView(MacGap)的时候,性能反而不如 Chrome,后来切到 Electron 才稳定。

所以 Electron 自带 Chromium 不是为了”大”而大,而是环境可控。 打包时确定浏览器版本,测试过的就是用户跑的版本。WebView 方案本质上是把环境风险转嫁给了用户。

总结

维度ElectronFlutterWebView 方案
UI 稳定性高(自带 Chromium)高(自绘引擎)不确定(依赖用户环境)
性能中等中等
开发体验好(Web 技术栈)差(Dart)好(Web 技术栈)
包体积中等
环境可控性
原生能力C++/ObjC/Rust 桥接原生支持受限

Electron 不是最好的跨端方案,但它是大厂场景下最务实的选择。

体积大不是缺点,是你为稳定性付出的代价。需要原生能力就用 C++/Objective-C/Rust 写原生模块。Flutter 技术上更优雅但 Dart 是硬伤。WebView 方案体积小但环境不可控。

技术选型没有银弹,只有 trade-off。