Tauri简介 #
一、什么是Tauri #
Tauri 是一个使用 Web 技术构建跨平台桌面应用的框架。它使用 Rust 作为后端语言,使用系统自带的 WebView 作为渲染引擎,让你可以用熟悉的前端技术开发高性能、小体积的桌面应用。
1.1 核心定位 #
text
Tauri = Rust 后端 + 系统 WebView + 前端框架
Tauri 的核心组成:
- Rust 后端:提供高性能、内存安全的后端逻辑
- 系统 WebView:使用操作系统自带的渲染引擎,无需打包 Chromium
- 前端框架:支持 React、Vue、Svelte 等主流框架
1.2 核心特点 #
| 特点 | 说明 |
|---|---|
| 超小体积 | 打包后应用仅 3-10MB |
| 低内存占用 | 使用系统 WebView,内存占用极低 |
| 高安全性 | Rust 内存安全 + 细粒度权限控制 |
| 高性能 | Rust 后端,接近原生性能 |
| 跨平台 | 支持 Windows、macOS、Linux |
| 现代化 | 支持最新 Web 技术标准 |
二、Tauri架构 #
2.1 架构图 #
text
┌─────────────────────────────────────────────────────┐
│ Tauri 应用 │
├─────────────────────────────────────────────────────┤
│ │
│ ┌─────────────┐ ┌─────────────┐ │
│ │ Rust 后端 │ IPC │ WebView │ │
│ │ (Core) │◄────────────►│ (Frontend) │ │
│ │ │ 通信 │ │ │
│ │ Rust │ │ HTML/CSS │ │
│ │ 环境 │ │ JavaScript │ │
│ └─────────────┘ └─────────────┘ │
│ │ │ │
│ ▼ ▼ │
│ ┌─────────────┐ ┌─────────────┐ │
│ │ 系统 API │ │ Web 页面 │ │
│ │ 文件系统 │ │ 前端框架 │ │
│ │ 原生功能 │ │ UI 组件 │ │
│ └─────────────┘ └─────────────┘ │
│ │
└─────────────────────────────────────────────────────┘
2.2 各平台 WebView #
| 平台 | WebView 引擎 | 说明 |
|---|---|---|
| Windows | WebView2 | 基于 Chromium,Windows 10/11 内置 |
| macOS | WKWebView | 基于 WebKit,macOS 原生支持 |
| Linux | WebKitGTK | 基于 WebKit,需要安装依赖 |
2.3 通信机制 #
rust
// Rust 后端定义命令
#[tauri::command]
fn greet(name: &str) -> String {
format!("Hello, {}!", name)
}
javascript
// 前端调用命令
import { invoke } from '@tauri-apps/api/core';
const result = await invoke('greet', { name: 'World' });
console.log(result); // "Hello, World!"
三、发展历史 #
3.1 时间线 #
| 年份 | 事件 |
|---|---|
| 2019 | Tauri 项目启动 |
| 2020 | 发布 1.0 Beta 版本 |
| 2022 | 发布 1.0 正式版 |
| 2024 | 发布 2.0 版本 |
3.2 版本特性 #
text
Tauri 1.x
├── 基础窗口管理
├── 命令系统
├── 插件系统
└── 自动更新
Tauri 2.x
├── 增强的权限系统
├── 多窗口改进
├── 移动端支持(iOS/Android)
├── 更好的插件生态
└── 性能优化
四、应用场景 #
4.1 适合的场景 #
开发工具
text
代码编辑器、IDE 插件、终端工具、Git 客户端
效率工具
text
笔记应用、待办事项、时间追踪、剪贴板管理
系统工具
text
文件管理器、系统监控、备份工具、配置管理
媒体工具
text
音乐播放器、视频播放器、图片浏览器
4.2 知名应用案例 #
| 应用 | 类型 | 说明 |
|---|---|---|
| Clippy | 效率工具 | 跨平台剪贴板管理器 |
| AppFlowy | 效率工具 | 开源 Notion 替代品 |
| PingCAP | 开发工具 | 数据库管理工具 |
| Greenshot | 效率工具 | 截图工具 |
| Pake | 开发工具 | 网页打包为桌面应用 |
五、与其他技术对比 #
5.1 Tauri vs Electron #
| 方面 | Tauri | Electron |
|---|---|---|
| 渲染引擎 | 系统 WebView | Chromium |
| 后端语言 | Rust | Node.js |
| 包体积 | 小(~3-10MB) | 大(~150MB) |
| 内存占用 | 低 | 高 |
| 启动速度 | 快 | 较慢 |
| 学习曲线 | 较陡(Rust) | 平缓 |
| 生态成熟度 | 发展中 | 成熟 |
| 安全性 | 高 | 中 |
5.2 Tauri vs 原生开发 #
| 方面 | Tauri | 原生开发 |
|---|---|---|
| 开发效率 | 高 | 低 |
| 学习曲线 | 中等 | 陡峭 |
| 性能 | 接近原生 | 最高 |
| 包体积 | 小 | 最小 |
| 跨平台 | 优秀 | 需要分别开发 |
| UI 一致性 | 依赖 WebView | 原生风格 |
5.3 Tauri vs Flutter #
| 方面 | Tauri | Flutter |
|---|---|---|
| 技术栈 | Web + Rust | Dart |
| UI 一致性 | 依赖系统 | 自绘引擎 |
| 性能 | 高 | 高 |
| 桌面支持 | 成熟 | 发展中 |
| 移动端支持 | 2.x 支持 | 成熟 |
| 学习曲线 | 中等 | 中等 |
六、优缺点分析 #
6.1 优点 #
1. 极小的应用体积
text
Tauri 应用打包后通常只有 3-10MB
相比 Electron 动辄 150MB+,优势明显
2. 低内存占用
text
使用系统 WebView,无需打包渲染引擎
内存占用通常只有 Electron 的 1/3 到 1/2
3. 高安全性
rust
// 细粒度权限控制
"permissions": [
"core:default",
"shell:allow-open",
"dialog:allow-open"
]
4. 高性能后端
rust
// Rust 后端,接近原生性能
#[tauri::command]
fn heavy_computation(data: Vec<u8>) -> Result<Data> {
// 高性能计算
Ok(process_data(data))
}
6.2 缺点 #
| 缺点 | 说明 | 解决方案 |
|---|---|---|
| Rust 学习曲线 | 后端需要 Rust 知识 | 学习 Rust 基础,或使用现有插件 |
| WebView 差异 | 不同平台 WebView 有差异 | 使用 Polyfill 或降级处理 |
| 生态相对较小 | 相比 Electron 插件较少 | 社区快速发展中 |
| 调试复杂 | 前后端分离调试 | 使用 Tauri DevTools |
七、技术栈组成 #
7.1 核心技术 #
text
Tauri 应用技术栈
├── 前端技术
│ ├── HTML5 页面结构
│ ├── CSS3 样式设计
│ ├── JavaScript 交互逻辑
│ └── 前端框架 React/Vue/Svelte
├── Rust 后端
│ ├── tauri 核心库
│ ├── serde 序列化
│ ├── tokio 异步运行时
│ └── 原生 crates Rust 生态
└── Tauri API
├── invoke 命令调用
├── window 窗口管理
├── dialog 对话框
├── fs 文件系统
├── shell Shell 命令
└── http HTTP 请求
7.2 常用插件 #
| 插件 | 用途 |
|---|---|
| tauri-plugin-shell | 执行 Shell 命令 |
| tauri-plugin-fs | 文件系统操作 |
| tauri-plugin-dialog | 系统对话框 |
| tauri-plugin-notification | 系统通知 |
| tauri-plugin-store | 持久化存储 |
| tauri-plugin-updater | 自动更新 |
| tauri-plugin-sql | 数据库支持 |
八、学习路线 #
8.1 学习路径 #
text
基础阶段
├── Web 前端基础
├── 前端框架(React/Vue/Svelte)
├── Rust 基础语法
└── Tauri 基础 API
进阶阶段
├── 命令系统
├── 窗口管理
├── 状态管理
└── 事件系统
高级阶段
├── 插件开发
├── 原生模块
├── 性能优化
└── 打包发布
8.2 前置知识要求 #
| 知识 | 要求程度 |
|---|---|
| JavaScript/TypeScript | 熟练 |
| HTML/CSS | 基础 |
| 前端框架 | 基础 |
| Rust | 基础(后端开发需要) |
| 命令行操作 | 基础 |
九、总结 #
9.1 核心要点 #
| 要点 | 说明 |
|---|---|
| 定义 | 使用 Web 技术构建跨平台桌面应用 |
| 核心 | Rust 后端 + 系统 WebView |
| 优势 | 小体积、低内存、高安全、高性能 |
| 架构 | 前后端分离,IPC 通信 |
9.2 下一步 #
现在你已经了解了 Tauri 的基本概念,接下来让我们学习 环境搭建,搭建你的 Tauri 开发环境!
最后更新:2026-03-28