Tauri 教程
Tauri 是一个用于构建跨平台桌面和移动应用的框架。它让你可以使用 Web 技术(HTML、CSS、JavaScript)开发用户界面,同时使用 Rust 编写后端逻辑,生成小巧、快速、安全的原生应用。
什么是 Tauri
Tauri 是一个跨平台应用开发框架,核心理念是:用 Web 技术做界面,用 Rust 做底层。与 Electron 不同,Tauri 不捆绑 Chromium 和 Node.js,而是使用操作系统自带的 WebView,这使得最终的应用体积可以小到 600KB 以下。
核心优势
Tauri 有三大核心优势:
- 安全性:基于 Rust 的内存安全和类型安全,每个版本都经过安全审计
- 小体积:使用系统原生 WebView,不捆绑浏览器引擎,最小应用可小于 600KB
- 灵活性:支持任意前端框架,可以使用 Rust、Swift、Kotlin 等多种语言编写后端逻辑
Tauri 能做什么
Tauri 可以构建各种类型的应用:
- 桌面应用:支持 Windows、macOS、Linux
- 移动应用:支持 iOS、Android(Tauri 2.0+)
- 开发工具:代码编辑器、调试工具
- 生产力应用:笔记软件、任务管理器
- 媒体应用:音乐播放器、图片查看器
- 企业应用:内部管理系统、数据可视化工具
架构概览
Tauri 采用多进程架构,这与现代浏览器的设计理念一致。
进程模型
┌─────────────────────────────────────────────────────────────┐
│ Core Process │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────────┐ │
│ │ App Logic │ │ IPC Router │ │ System APIs │ │
│ │ (Rust) │ │ │ │ (窗口/菜单/通知) │ │
│ └──────────────┘ └──────────────┘ └──────────────────┘ │
└─────────────────────────────────────────────────────────────┘
│
│ IPC (进程间通信)
│
┌─────────────────────────────────────────────────────────────┐
│ WebView Process │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ Frontend (HTML/CSS/JavaScript) │ │
│ │ │ │
│ │ ┌──────────┐ ┌──────────┐ ┌──────────────────┐ │ │
│ │ │ UI │ │ State │ │ Tauri API │ │ │
│ │ │ │ │ │ │ (invoke/events) │ │ │
│ │ └──────────┘ └──────────┘ └──────────────────┘ │ │
│ └──────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
Core Process(核心进程)
每个 Tauri 应用只有一个核心进程,它是应用的入口点:
- 使用 Rust 编写,享有内存安全和线程安全
- 负责创建和管理应用窗口
- 提供系统级 API(文件系统、网络、通知等)
- 作为 IPC 的路由中心,所有前后端通信都经过这里
WebView Process(渲染进程)
每个窗口对应一个独立的 WebView 进程:
- 运行 Web 技术栈(HTML/CSS/JavaScript)
- 使用操作系统提供的 WebView:
- Windows: Microsoft Edge WebView2
- macOS: WKWebView
- Linux: WebKitGTK
- 默认无法直接访问系统 API,通过 IPC 与 Core 进程通信
与 Electron 的对比
| 特性 | Tauri | Electron |
|---|---|---|
| 应用体积 | 极小(约 600KB 起) | 较大(约 100MB+) |
| 内存占用 | 低 | 较高 |
| 前端框架 | 任意 | 任意 |
| 后端语言 | Rust(也可 Swift/Kotlin) | Node.js |
| 安全性 | 默认安全,权限最小化 | 需要额外配置 |
| 移动支持 | 原生支持(2.0+) | 需借助其他方案 |
| 启动速度 | 快 | 相对较慢 |
开发环境搭建
前提条件
Tauri 需要以下依赖:
- Rust:Tauri 的核心使用 Rust 编写
- 系统依赖:根据操作系统不同有所差异
- Node.js(可选):如果使用 JavaScript/TypeScript 前端
Windows 环境配置
安装 Microsoft C++ 构建工具:
- 下载 Microsoft C++ Build Tools
- 安装时勾选「使用 C++ 的桌面开发」
安装 WebView2:
下载 WebView2 Runtime 的「Evergreen Bootstrapper」并安装。
安装 Rust:
在 PowerShell 中运行:
winget install Rustlang.Rustup
或使用官方安装器:
Invoke-WebRequest -Uri https://sh.rustup.rs -OutFile rustup-init.exe
.\rustup-init.exe
macOS 环境配置
安装 Xcode 命令行工具:
xcode-select --install
安装 Rust:
curl --proto '=https' --tlsv1.2 https://sh.rustup.rs -sSf | sh
Linux 环境配置
以 Ubuntu/Debian 为例:
sudo apt update
sudo apt install libwebkit2gtk-4.1-dev \
build-essential \
curl \
wget \
file \
libxdo-dev \
libssl-dev \
libayatana-appindicator3-dev \
librsvg2-dev
安装 Rust:
curl --proto '=https' --tlsv1.2 https://sh.rustup.rs -sSf | sh
验证安装
安装完成后,验证 Rust 是否正确安装:
rustc --version
cargo --version
创建第一个 Tauri 应用
使用 create-tauri-app
create-tauri-app 是官方推荐的快速创建项目的工具,支持多种前端框架模板。
sh <(curl https://create.tauri.app/sh)
按照提示选择:
- 项目名称
- 包标识符(如 com.example.app)
- 前端语言(TypeScript/JavaScript/Rust/.NET)
- 包管理器(npm/yarn/pnpm/bun)
- UI 框架(Vanilla/Vue/React/Svelte 等)
项目结构
创建完成后,项目结构如下:
my-tauri-app/
├── src/ # 前端代码
│ ├── main.ts
│ ├── style.css
│ └── index.html
├── src-tauri/ # Tauri 后端代码
│ ├── src/
│ │ └── lib.rs # Rust 入口文件
│ ├── Cargo.toml # Rust 依赖配置
│ ├── tauri.conf.json # Tauri 配置文件
│ └── icons/ # 应用图标
├── package.json # Node.js 依赖
└── vite.config.ts # Vite 配置(如使用)
运行开发服务器
cd my-tauri-app
npm install
npm run tauri dev
首次运行会下载编译 Rust 依赖,可能需要几分钟。后续启动会快很多。
构建生产版本
npm run tauri build
构建完成后,安装包位于 src-tauri/target/release/bundle/ 目录。
教程目录
入门基础
核心概念
前端开发
- 进程间通信 - Commands 和 Events 的完整使用指南
系统集成
插件系统
- 官方插件 - 常用官方插件介绍
打包发布
- 应用打包 - 构建与分发应用
参考资料
- 速查表 - 常用 API 速查
学习建议
- 理解进程模型:Core 进程和 WebView 进程的分离是 Tauri 安全设计的基础
- 掌握 IPC 通信:Commands 用于请求-响应模式,Events 用于通知和状态同步
- 重视安全:Tauri 默认安全,理解权限系统有助于构建更安全的应用
- 善用类型系统:Rust 的类型安全和前端 TypeScript 结合,可以大幅减少运行时错误
- 参考官方文档:Tauri 官方文档质量很高,遇到问题首先查阅