把网站包成桌面窗口,Tauri 和 Electron 差在哪
Electron 把自己的 Chromium 和 Node.js 装进每一个应用里,Tauri 用的是系统里本来就有的网页视图,对套壳的网站来说,这决定了引擎由谁来更新,以及同一个页面在不同电脑上表现是否一致。
自带 Chromium,还是系统网页视图
Electron 的文档说它的做法是把 Chromium 和 Node.js 嵌进自己的二进制里,所以每个 Electron 应用都用它出厂时带的那一版 Chromium 渲染。Tauri 不带浏览器引擎,应用用的是系统里现成的网页视图,窗口由 TAO 创建,网页视图由 WRY 绘制,后端用 Rust 写。它的网页视图说明列出了各个系统上用的东西:
- macOS:WKWebView,也就是 Safari 背后的引擎,系统预装,随 macOS 更新,不再收到系统更新的 macOS 版本,WebKit 也就不再更新。
- Windows:WebView2,基于 Edge 的 Chromium,会自己更新,Windows 11 自带。WebView2 是什么里有更详细的说明。
- Linux:WebKitGTK,版本取决于发行版带的是哪一个,Tauri 自己的页面也承认 Linux 上很难整理出准确的版本信息,表格并不完整。
最后这一点用数字更直观。WebKitGTK 官网在写这篇时列出的最新稳定版是 2.54.1,发布于 2026 年 10 月 2 日,几年前的发行版带的可能旧得多,Tauri 的表格里,WebKitGTK 2.36 对应的是好几个 Debian 和 Ubuntu 版本上的 WebKit 614.1.6。
引擎由谁来更新
真正的差别在这里,比安装包大小更重要。引擎自带的话,更新它的是应用作者,Electron 每 8 周发一个新的大版本,节奏跟着 Chromium,它的发布时间线写明团队支持最新的三个稳定大版本,安全指南要求尽量始终使用最新的版本。对套壳网站来说,用户拿到 Chromium 修复的时间,由你发版的节奏决定,不由 Google 决定。
用系统网页视图的话,责任落在用户的电脑上。微软说 WebView2 Runtime 的发布节奏是两周一次,和 Edge 同步,使用 Evergreen 的应用在重启之后会用上新的运行时。WKWebView 跟着 macOS 更新,WebKitGTK 跟着发行版走。这样套壳的网站不用你发版就保持较新,同样也会在你没发版的时候自己变化。
套壳的网站会有什么不同
| Electron | Tauri | |
|---|---|---|
| 引擎 | 应用自带的 Chromium | WKWebView、WebView2 或 WebKitGTK |
| 同一个页面在两台电脑上 | 同一个应用版本用同一个引擎 | 取决于系统、WebView2 或发行版 |
| 引擎更新 | 只有应用发新版本时才更新 | 随系统、WebView2 或发行版更新 |
| 浏览器扩展 | Chrome 扩展 API 的一个子集,只能加载解压后的扩展,应用退出后不会记住 | macOS 和 Linux 不支持,只有 Windows 支持 |
实际用起来,在 Safari 里能用的网站,在 Mac 上的 Tauri 窗口里通常也能用,在 Edge 里能用的网站在 Windows 上通常也行,但浏览器里通过只是个好迹象,不是保证。音视频的编解码跟着引擎走,所以要把你在意的媒体放一遍。你在 Chrome 或 Edge 里装的扩展,不会跟着网站进入这两种窗口。
Pake 的常见问题里有两个问题和引擎直接有关。有些网站在页面前面放了 Cloudflare 验证,系统网页视图,尤其是 Linux 上的 WebKitGTK,常被这类验证标记,即使换了自定义的 User Agent 也会一直循环通不过,另外在 Arch Linux 上本地构建的 AppImage 可能找不到 WebKitNetworkProcess,常见问题把原因追到了 Tauri 打包器的限制。这两个都来自 Linux 上用系统网页视图,也就是不自带引擎要付的代价。
登录是另一回事。Google 的 OAuth 政策讲的是内嵌用户代理这一类,没有点名哪个引擎,所以换工具也绕不开服务商的拒绝,这种情况见登录排查。
大小要自己量
公开的大小对比通常量的是一个空应用,对你要做的那个应用参考价值有限,而且安装包大小和内存占用是两回事。结构上的差别是真实的,Electron 的打包说明是把你的应用目录放进 Electron 预编译好的二进制里,所以下载包里含有一个浏览器引擎,Tauri 则说一个最小的应用可以小于 600KB,这是它对空应用的说法。
在 Windows 上,数字取决于 WebView2 怎么交付。Tauri 的 Windows 安装包文档列了五种模式,默认的 downloadBootstrapper 不增加安装包体积,embedBootstrapper 增加约 1.8 MB,offlineInstaller 约 127 MB,fixedRuntime 约 180 MB。微软分发说明里写的 Fixed Version 二进制超过 250 MB,所以这些数字当数量级看就好,每个来源的时间不同。
内存由引擎和页面决定。Pake 的常见问题说,Gemini、Slack、ChatGPT 这类重型单页应用,在 GNOME Web 这样的 WebKitGTK 浏览器里用掉的内存相当,小安装包是一种取舍,不等于运行时占用更低。所以去量你真正要交给别人的那个文件,Mac 上用访达的显示简介或 du -sh,Windows 上看安装包,再看设置里应用的已安装大小,Linux 上看 .deb、.rpm 或 AppImage,内存则打开网站以后看活动监视器或任务管理器。
什么时候 Electron 才是对的选择
需要一个你在每个系统上都测过的 Chromium 版本时,选 Electron,比如某个 WebKit 没有的网页功能,某个 Chromium 专属的开关,或者你打算加载的扩展。代价是引擎只有在你发新版时才往前走,Electron 自己的安全指南还提醒过,不要在开启 Node.js 集成的情况下加载并执行远程代码,所以套壳的应用得把它关掉,也得持续更新。
想让引擎跟着系统保持较新,又愿意在每个系统上测试这个网站,包括你的 Linux 发行版带的 WebKitGTK 版本,就选系统网页视图。
Pake 的定位
Pake 基于 Tauri,包装的是一个现成的地址,它不是用来搭建自己界面的框架,那是 Electron 和 Tauri 本身的用途。它做的应用在 Mac 上用 WKWebView,在 Windows 上用 WebView2,在 Linux 上用 WebKitGTK,文档里也没有换成别的引擎的设置。
Mac 和 Windows 版的 Pake 不需要 Node.js 和 Rust 就能做出这些应用,在创建页粘贴地址,调好窗口,再点创建应用。Windows 上这些应用需要 Microsoft Edge WebView2 运行时,Windows 11 已经自带,见安装。CLI 也能为 Linux 打包,需要 Node.js 和 Rust:
pake https://example.com --name Example
从 Nativefier 这类 Electron 套壳工具转过来,要把网站重新测一遍,不要默认它表现一样,把 Nativefier 应用迁到 Pake一步步讲了怎么做,WebCatalog、Unite、Coherence X 和 Pake 的对比则讲了其他把网站做成应用的工具。
常见问题
Tauri 应用比 Electron 应用更快吗
这里引用的资料都没有测过这件事。速度取决于网站和引擎,WebKit 和 Chromium 不一样,重型页面在哪个里面都吃内存,决定之前拿你自己的网站在两边试一下。
Mac 上的 Pake 应用能选 Chromium 吗
文档里没有这样的设置。Pake 在每个平台上都用系统网页视图,网站如果在 Mac 上必须保持 Chromium 的行为,就该去看基于 Chromium 的套壳工具。
套壳之前怎么测试网站
Mac 上用 Safari,Windows 上用 Edge,跑的就是应用会用到的那两个引擎,目标是 Linux 的话再用 GNOME Web,然后做出真正的应用,检查登录、上传和媒体。
