Tauri 是一个使用 Web 技术(HTML、CSS、JavaScript)和 Rust 后端构建桌面应用程序的框架。它使开发者能够创建轻量级、安全且跨平台的应用程序,同时注重小巧的二进制文件大小和高性能。与 Electron 等类似解决方案不同,Tauri 利用操作系统原生 WebView,而不是捆绑整个 Chromium 运行时。
有关 Tauri 中使用的关键概念的信息,请参阅关键概念。有关代码库组织的详细信息,请参阅项目结构。
来源: README.md12-16 ARCHITECTURE.md7-9
Tauri 遵循分层架构,包含四个主要层
来源: ARCHITECTURE.md18-52 README.md14-16
Tauri 通过一个称为进程间通信 (IPC) 的系统在前端和后端之间采用消息传递方法。这允许 JavaScript 代码调用 Rust 函数,反之亦然。该架构遵循几个重要的设计原则
来源: crates/tauri/src/ipc/channel.rs13-32 ARCHITECTURE.md116-124 ARCHITECTURE.md23-27 README.md14-16
这是将框架所有部分整合在一起的核心组件。它在编译时读取配置文件,在运行时注入脚本,托管系统交互的 API,并管理应用程序更新。
一个跨平台的 WebView 渲染库,支持所有主流桌面平台。Tauri 使用 WRY 作为特定于平台的 WebView 实现的抽象层。
一个跨平台的应用程序窗口创建库,负责处理不同平台的窗口管理。它是 winit 的一个分支,并为 Tauri 的特定需求(如菜单栏和系统托盘功能)进行了扩展。
用于连接 JavaScript 前端和 Rust 后端的系统,支持
来源: ARCHITECTURE.md23-27 ARCHITECTURE.md79-86 crates/tauri/src/ipc/channel.rs45-50
Tauri 支持以下平台
| 平台 | 支持的版本 |
|---|---|
| Windows | 7 及以上版本 |
| macOS | 10.15 及以上版本 |
| Linux | webkit2gtk 4.0+ (Ubuntu 18.04+) |
| iOS/iPadOS | 9 及以上版本 |
| Android | 7 及以上版本 |
来源: README.md42-52
与 Electron 等替代方案相比,Tauri 应用程序的二进制文件大小显著减小,因为它不捆绑 Chromium 运行时,而是利用操作系统原生的 WebView。
.app、.dmg、.deb、.exe 等)应用程序使用 Web 技术作为前端,Rust 作为后端进行构建。开发工作流程通常包括
来源: README.md30-41 ARCHITECTURE.md122-140 ARCHITECTURE.md165-177
| 功能 | Tauri | Electron |
|---|---|---|
| WebView 引擎 | 操作系统原生 WebView | 捆绑的 Chromium |
| 后端语言 | Rust | Node.js (JavaScript/TypeScript) |
| 二进制文件大小 | 较小(约 3-20MB) | 较大(约 100-200MB) |
| 内存使用 | 较低 | 较高 |
| 运行时支持 | 编译为原生代码 | 需要 Node.js 运行时 |
| 安全模型 | 细粒度的权限 | 默认完全系统访问 |
| 移动支持 | Windows、macOS、Linux、iOS、Android | Windows, macOS, Linux |
| 开发体验 | Web + Rust | Web + JavaScript |