Tauri v2 vs Electron:真实开发 6 个月后的诚实感受

发布: (2026年4月29日 GMT+8 13:04)
4 分钟阅读
原文: Dev.to

Source: Dev.to

概览

所有测试均在一台 8 年旧的 MacBook Air 上进行。经过对 Electron 的严肃评估后,我已经使用 Tauri v2 发布了多个 macOS 应用。以下内容基于六个月的真实开发经验——而非合成基准测试。

包体积

  • Electron 捆绑 Chromium,导致应用在未添加任何代码前体积约为 150 MB
  • Tauri 使用系统自带的 WebView(macOS 上为 WKWebView)。我最大的 Tauri 应用的 DMG 体积 低于 10 MB

对于在 App Store 之外分发的付费应用,这一差异相当显著——一个简单的 PDF 工具如果需要下载 150 MB,往往很难吸引用户。

语言与开发体验

方面ElectronTauri
主要语言JavaScript/TypeScript后端使用 Rust,前端使用任意 Web 技术
学习曲线如果已经会 JS,则较低对 Rust 新手来说更高;需要 2–3 个月适应借用检查器和异步共享状态
类型安全运行时无类型安全编译时强类型保证;类型系统在代码到达用户前捕获大量错误
性能余量受限于 Chromium余量大,得益于原生 Rust 代码

即使已有一定的 Rust 基础,我仍觉得开发速度低于预期。

权限与插件生态

  • Tauri 的 capabilities/permissions 系统 能细粒度控制每个窗口的访问权限。
  • 插件生态 正在快速扩展。常用插件包括:
    • tauri-plugin-fs
    • tauri-plugin-shell
    • tauri-plugin-notification

大多数常见功能已经可以直接使用。

进程间通信 (IPC)

前端与 Rust 后端之间的通信使用 invoke()。在正确配置下,这种 IPC 干净且类型安全

原生 macOS API 访问

访问 macOS 特定 API(如 PDFKit、Vision Framework)需要 Swift/Objective‑C 辅助二进制。Tauri 并未抽象这一层,必须自行构建并管理桥接。功能可用,但文档相对匮乏。

热重载与开发速度

  • cargo tauri dev 为前端提供 热重载
  • 对 Rust 代码的修改会触发 完整重新编译,复杂后端需要 30–60 秒
  • 相比之下,Electron 的开发体验显得更快。

错误处理

当 Tauri 命令失败时,前端通常只收到通用的 “command failed” 信息。若想获得有用的诊断信息,需要在 Rust 端 显式序列化错误

结论

Tauri v2 对于 包体积、性能以及 Rust 集成 有较高要求的应用是一个强有力的选择。但它 并非万用方案;合适的工具应依据项目约束和团队技术栈来决定。

示例应用: Hiyoko PDF Vault –

— @hiyoyok

0 浏览
Back to Blog

相关文章

阅读更多 »