为什么 QzoneArchive 选 Tauri 2 而不是 Electron
Tauri vs Electron:体积和安全的双重差异
桌面应用的两大主流框架是 Electron 和 Tauri。QzoneArchive 选择了 Tauri 2,这不是偶然:
| 对比项 | Electron | Tauri 2 | QzoneArchive 选 Tauri 的理由 |
|---|---|---|---|
| 安装包体积 | 80MB+(含 Chromium) | 20MB 以内(复用系统 WebView) | 归档工具可能要挂机几小时,体积小内存占用低 |
| 运行时内存 | 数百 MB | 数十 MB | 后台跑归档不影响日常使用 |
| 前端与后端边界 | Node.js 和渲染进程共享权限边界弱 | Rust 后端通过 IPC 暴露最小权限 | 登录凭证存在 Rust 侧,前端碰不到——关键安全设计 |
| 跨平台 | 桌面 + 移动 | 桌面 + 移动(Tauri 2 原生支持 Android/iOS) | 一个代码库覆盖桌面和移动端 |
分层架构
Tauri 的架构把应用分成清晰的两层:
┌─────────────────────────────────────────────┐
│ 前端层:Vue 3 + PrimeVue + Pinia │ ← 只负责界面渲染和用户交互
│ 运行在系统 WebView 里 │ 不能直接访问文件系统或网络
└─────────────────┬───────────────────────────┘
│ IPC(进程间通信)
┌─────────────────┴───────────────────────────┐
│ 后端层:Rust + rusqlite + reqwest │ ← 负责所有系统级操作
│ 进程原生运行 │ 文件读写、HTTP 请求、数据库、Cookie 管理
└─────────────────────────────────────────────┘
登录凭证、归档进度、SQLite 数据库、媒体缓存——所有敏感或系统级的操作都在 Rust 后端。前端只能通过 IPC 调用后端暴露的接口,拿不到原始 Cookie 或数据库内容。
Tauri 2 的 Android 支持
Tauri 2 的一个重要新特性是原生支持 Android(和 iOS)。这意味着 QzoneArchive 的 Android 版不是单独的项目——它和桌面版共享同一套 Rust 后端代码,只是前端 UI 做了适配。
这样做的好处是:
- 桌面版和移动端的归档逻辑完全一致
- 维护成本低——修一个 bug 两边同时好
- 登录凭证安全机制两边同样适用(Rust 后端处理)
一句话总结
Tauri 不是一个"更好看的 Electron",而是一个安全边界更清晰的应用框架。对于 QzoneArchive 这种需要处理用户登录凭证的工具,这个安全边界是选型时最关键的考虑。