Tauri 最显著的特点是 small,打包出来的物料很小。原因是它不像 Electron 那样,需要一个完整的 Chromium 引擎,它本质上就是一个打包器,在不同的平台使用不同的 webview 引擎。比如Tauri 在 Windows 上使用 Microsoft Edge WebView2,在 macOS 上使用 WKWebView,在 Linux 上使用 webkitgtk。
代价就是,无法保证多平台的兼容性和一致性。
我个人觉得,这个问题很严重,甚至可能比你我想象中的要严重。
我没研究过 webview,也不了解不同平台上的 webview 具体的表现,但是我经常在 macOS 和 Linux 做开发,非常明显地观察到,使用Tauri 做一些小工具时, Linux 上的 WebkitGTK 表现很差。具体表现为页面加载明显不如其他平台,崩溃概率也比较高,更重要的是,WebkitGTK 的渲染表现和其他平台的差异很大。
当然,WKWebView 也是个坑,但是至少在 macOS 上表现良好,并且和 Chromium 兼容性明显比 WebkitGTK 更好。
Electron 虽然打包体积大,但是至少它不会存在一致性的问题。有时候,体积并不是什么大问题,而Tauri 的这个对于分发量大的应用来说,会带来非常大的测试工作。
我个人觉得 Tauri 如果要解决这个问题,未来可能的选项有:
servo 看起来是一个非常完美的选择。然而,就目前来说,servo 是一个比 WebkitGTK 更不靠谱的选择。servo 想要追上 WebkitGTK 估计都要好几年了。
CEF 全名叫 Chromium Embedded Framework。目前 CEF 有两个比较大的问题:第一个是它的每次发版都带来破坏性变更,这对于一个底层库来说,非常不友好;第二个是它很能大,如果在应用程序里嵌入 CEF,安装包体积直接大于100mb。理想情况下,应该是系统直接共享同一份 CEF。
目前的Tauri v2 版本肯定是无法摆脱在linux 平台上使用 WebkitGTK 。不过官方团队似乎会优先考虑走CEF 的路线,因为,官方已经fork了一个 cef-rs的项目:
https://github.com/tauri-apps/cef-rs
另外,你觉得 Tauri 和 Electron 存在竞争关系吗?
我只大概地看过 Electron 文档,但是从来没有使用过 Electron 写应用。我个人觉得,Tauri 和 Electron 大概只有小部分存在交叉的地方。Tauri 的前端 API 太少了,不足以满足日常桌面应用开发需求。因此,Tauri 的用户人群只能是既会 Rust 又会前端的开发者。前端开发者一抓一大把,但是 Rust 开发者,那可就是稀有动物(相对于前端、java)了。