跳到主要内容

Tauri 外壳

桌面外壳基于 Tauri 2 构建。它拥有原生窗口、启动后端, 并保证两者一起关闭。

外壳的工作

外壳做三件事:

  1. 派生 sidecar —— 它启动自包含的 Node.js 后端进程, 并在打开 webview 之前等待本地 API 就绪。你绝不会看到一个指向死服务器 的半加载窗口。
  2. 托管 webview —— 生产 Web 应用在 Tauri webview 中运行, 并通过一个随机空闲端口上的 127.0.0.1 与后端通信。
  3. 拥有生命周期 —— 窗口事件和进程事件被连接起来, 使后端和外壳总是作为一个整体退出。

窗口生命周期

  • 关闭 —— 关闭窗口会触发 sidecar 的优雅关闭。后端被要求干净地停止, 应用在退出前等待它。不会留下孤立的 Node.js 进程。
  • 后端崩溃 —— 如果 sidecar 意外退出,外壳会以错误终止, 而不是显示一个什么都做不了的窗口。正常退出被单独标记, 因此干净的关闭永远不会被误认为是崩溃。
  • 重启 —— 再次启动应用会从头重新派生 sidecar。状态存在于数据目录中, 而不是进程中,因此重启是无损的。

窗口就是 API

由于外壳在显示内容之前等待 API,首次启动感觉是即时的:窗口在应用就绪时 打开。后端只在临时端口上的 127.0.0.1 监听, 因此不会向网络暴露任何东西。

更新器集成

发布构建集成 Tauri 更新器。外壳可以检查核心更新、验证清单和 minisign 签名、安装平台工件并重启。更新器独立于用户的数据目录替换核心, 未签名的降级被拒绝。没有更新端点和公钥构建的版本功能完整, 但会报告更新未配置。

开发构建

对于开发,同一个外壳可以针对开发服务器和本地启动的后端运行。 生产保证 —— sidecar 随窗口退出 —— 适用于打包构建;pnpm desktop:dev 把外壳连接到你在运行的开发进程。

sidecar 如何打包和管理,请参阅Node Sidecar