跳到主要内容

Tauri 教程

Tauri 是一个用于构建跨平台桌面和移动应用的框架。它让你可以使用 Web 技术(HTML、CSS、JavaScript)开发用户界面,同时使用 Rust 编写后端逻辑,生成小巧、快速、安全的原生应用。

什么是 Tauri

Tauri 是一个跨平台应用开发框架,核心理念是:用 Web 技术做界面,用 Rust 做底层。与 Electron 不同,Tauri 不捆绑 Chromium 和 Node.js,而是使用操作系统自带的 WebView,这使得最终的应用体积可以小到 600KB 以下。

核心优势

Tauri 有三大核心优势:

  1. 安全性:基于 Rust 的内存安全和类型安全,每个版本都经过安全审计
  2. 小体积:使用系统原生 WebView,不捆绑浏览器引擎,最小应用可小于 600KB
  3. 灵活性:支持任意前端框架,可以使用 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 的对比

特性TauriElectron
应用体积极小(约 600KB 起)较大(约 100MB+)
内存占用较高
前端框架任意任意
后端语言Rust(也可 Swift/Kotlin)Node.js
安全性默认安全,权限最小化需要额外配置
移动支持原生支持(2.0+)需借助其他方案
启动速度相对较慢

开发环境搭建

前提条件

Tauri 需要以下依赖:

  1. Rust:Tauri 的核心使用 Rust 编写
  2. 系统依赖:根据操作系统不同有所差异
  3. Node.js(可选):如果使用 JavaScript/TypeScript 前端

Windows 环境配置

安装 Microsoft C++ 构建工具:

  1. 下载 Microsoft C++ Build Tools
  2. 安装时勾选「使用 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/ 目录。

教程目录

入门基础

核心概念

前端开发

系统集成

插件系统

打包发布

参考资料

学习建议

  1. 理解进程模型:Core 进程和 WebView 进程的分离是 Tauri 安全设计的基础
  2. 掌握 IPC 通信:Commands 用于请求-响应模式,Events 用于通知和状态同步
  3. 重视安全:Tauri 默认安全,理解权限系统有助于构建更安全的应用
  4. 善用类型系统:Rust 的类型安全和前端 TypeScript 结合,可以大幅减少运行时错误
  5. 参考官方文档:Tauri 官方文档质量很高,遇到问题首先查阅

延伸阅读