1.3 Tauri 与 Electron 的对比

原文链接: Tauri 1.0 Blog Post

1.3 Tauri 与 Electron 的对比

很多初学者会把 Tauri 和 Electron 放在一起比较。两者确实都解决了同一个问题:“用 Web 技术做桌面应用”。但它们的实现哲学很不一样。

一张对比表

对比项ElectronTauri
UI 渲染引擎内置完整 Chromium使用系统 WebView(不重复打包)
后端语言Node.js / 主进程 JavaScriptRust(核心进程)
包体积较大,常常 80 MB 起很小,最小示例通常不到 1 MB
安装体验安装包自带运行时依赖系统已安装的 WebView
前端框架任意 Web 框架任意 Web 框架
系统能力通过 Node 与 Chromium 能力访问通过 IPC 调 Rust,再按权限放行
内存占用每个应用都带完整浏览器进程相对更低,进程更少
学习曲线Node/JS 相对易上手需要一点 Rust 与权限概念
移动端支持官方支持有限Tauri v2 已支持 Android/iOS
安全性需要开发者自行注意 Node 暴露面默认权限系统更严格

为什么 Tauri 更小?

Electron 的做法是“打包一个浏览器进你的应用”。无论用户电脑里有没有 Chrome,你的应用里都自带一份 Chromium,所以包体积必然很大。

Tauri 的做法是“向操作系统借用浏览器”。在 macOS 上借 WKWebView,在 Windows 上借 WebView2,在 Linux 上借 WebKitGTK。于是安装包里只需包含你的前端静态资源、Rust 可执行文件和图标等少量内容。

代价也很现实:Tauri 的表现会受系统 WebView 版本影响。不同系统、不同年份的 WebView 对新 Web API 的支持不完全一致,因此 Tauri 应用仍要注意 Web 兼容性。

安全哲学差异

Electron 社区常提醒开发者“不要把 nodeIntegration 随手打开”。一旦 Web 页面里的恶意脚本能直接调用 Node API,风险会非常大。

Tauri 把这条规则内化成了默认设计:

  1. 前端运行在 WebView 沙箱中。
  2. 前端不能直接访问系统 API,只能通过 IPC 发送请求。
  3. Rust 端对请求有最终决定权,可以拒绝。
  4. 权限系统(Permissions/Capabilities)控制哪些窗口能用哪些命令。

这不代表 Tauri 自动免疫所有安全问题,但它的默认姿势确实更保守。

什么时候仍应选择 Electron?

  • 团队只熟悉 Node.js,且不想引入 Rust。
  • 需要依赖大量 npm 生态里的原生 Node 模块。
  • 需要统一 Chromium 版本带来的稳定行为,不希望跟随系统 WebView 变化。
  • 已有成熟 Electron 代码库,迁移成本高。

什么时候更适合 Tauri?

  • 希望安装包小、启动快。
  • 需要覆盖 Windows/macOS/Linux,还希望同一套代码能上 Android/iOS。
  • 愿意把安全边界和权限管理当成开发习惯。
  • 想用 Rust 做高性能、内存安全的后端逻辑。

小结

Tauri 不是“更好的 Electron”,而是“另一种取舍的方案”。它用“少一点内置、多一点系统依赖”换取体积和轻量;用“Rust + 权限系统”换取更清晰的安全边界。理解这个取舍后,后面的学习会顺很多。

下一步进入 第 2 章:搭建开发环境。