外观
桌面应用开发
只有确实需要本地文件、系统托盘、离线能力、硬件访问或桌面分发时,才把 Web 项目做成桌面应用。桌面端意味着额外的权限、安全、签名、更新和跨平台测试。
Electron
Electron 将 Chromium 与 Node.js 一起打包,生态成熟,Web 团队上手直接。主进程负责窗口和系统能力,渲染进程负责 UI;通过 preload 暴露最小、明确的 IPC 接口。
不要在渲染进程启用不受控的 Node 权限,不加载来源不明的远程页面。启用上下文隔离、验证 IPC 参数并限制导航。包体积较大是架构结果,不应靠删除未知运行文件解决。
Tauri
Tauri 使用系统 WebView 和 Rust 后端,通常产物更小、权限声明更细。代价是不同平台 WebView 行为、Rust 工具链和插件兼容性需要额外验证。
前端通过命令调用受控的原生功能。Capabilities 和命令参数都应遵循最小权限;文件系统、Shell 和更新功能尤其要限制路径与来源。
如何选择
| 条件 | 倾向 |
|---|---|
| 团队主要是 Web/Node,依赖 Electron 生态 | Electron |
| 重视包体、内存和精细权限,能维护 Rust | Tauri |
| 只是展示在线模型结果 | 先做 Web 或 Gradio/Streamlit |
发布不是“构建成功”即结束。Windows、macOS、Linux 的签名和自动更新路径不同;至少在目标系统测试安装、升级、卸载、文件权限、代理和离线状态。