不久前我们在 GitHub 发了一个Flutter 与 Tauri 的选型讨论,很高兴 Tauri 作者与 flutter_rust_bridge 作者都有深度参入。最后投票得分 Tauri 更高,虽然我们的初衷也是 Tauri,但是基于 IPC 问题,我们还是暂时选择 Flutter。我在这里对讨论做个总结,也方便大家日后选型。
支持 Tauri 的观点:
- Tauri 生态系统更丰富,拥有 html / css / js 海量资源
- Tauri 社区很棒,作为商业开源创业公司,更加积极处理用户反馈
- Tauri 基于浏览器内核,桌面环境下比 Flutter 更加成熟
- Tauri 更简单,构建简单,学习难度低,更容易吸收贡献者
- 与 Rust 集成更加简单,甚至调用 Rust 异步函数(我没试过)
- 编译后应用更小
反对 Tauri 的观点:
- IPC 性能一般(Tauri 作者在讨论里提到过丢弃共享内存支持的原因,以及 IPC 面临的问题,以及未来的优化,但是貌似后来他删掉了)
- 由于使用浏览器内核,内存用的多
- 不同平台浏览器版本匹配问题
- 没有安装 WebView 的 Win7 就比较费劲了,可以自己打个大包,也可以在线安装(国内网络场景下),皆不大友好
- 没有移动版本,作者提到今年要推出移动版本,据说是基于 EGUI 构建,但是要到稳定版本还有很长的路
支持 Flutter 的观点:
- 生态系统也很丰富
- 全平台
- FFI 性能好
- 大厂支持
反对 Flutter 的观点:
- 不支持 32 位 Windows 系统,Google 已经明确声明不予支持
- 构建调试,以及与Rust的集成要复杂一些
- 构建后的包略大,Windows 下一个 hello world 20MB, zip 压缩后 8.36MB,Linux 下也差不多
- 没有静态链接库