Tauri框架详解

  Tauri 是一个新兴的桌面应用开发框架,它使用 Rust 构建底层逻辑,前端则采用 Web 技术栈。与传统的 Electron 相比,Tauri 提供了更小的打包体积和更高的安全性,逐渐成为跨平台桌面应用的热门选择。

Tauri 是什么?

Tauri 是一个用于构建跨平台桌面应用的框架。它结合了系统级的 Rust 后端与基于 Webview 的前端界面,使得开发者可以用 ReactVueSvelte 等前端框架快速构建 UI,同时用 Rust 提供系统功能支持。

Tauri 的主要特性包括:

  • 支持 Windows、macOS 和 Linux。
  • 打包体积小(甚至低于 5MB)。
  • 安全性高(严格的 API 权限模型)。
  • 启动速度快、资源占用低。
  • 支持原生窗口控制、文件操作、通知等。

Tauri 与 Electron

对比项 Tauri Electron
底层语言 Rust Node.js + Chromium
体积大小 几 MB 通常几十 MB 到上百 MB
内存占用 较低 较高
前端技术栈 任意 Web 技术 任意 Web 技术
安全性 更强,基于权限声明和沙箱 相对较弱
执行性能 快速,基于原生调用 较慢,运行在完整浏览器内核
社区与成熟度 新兴,但快速增长 成熟,生态丰富

Tauri 的架构设计

Tauri 主要由以下几部分组成:

  1. 前端界面(Webview):你可以使用任何支持构建 HTML/CSS/JS 的框架,如 Vue、React、Svelte 等。
  2. 后端逻辑(Rust):用于处理系统级操作,如文件读写、窗口控制、进程管理等。
  3. 通信桥梁:前端通过 invoke 与后端通信,后端通过 command 注册函数。

前端代码示例:

1
2
3
4
5
import { invoke } from '@tauri-apps/api/tauri'

invoke('greet', { name: '小明' }).then((response) => {
console.log(response) // 输出:你好,小明
})

Rust 后端代码示例:

1
2
3
4
#[tauri::command]
fn greet(name: String) -> String {
format!("你好,{}!", name)
}

快速上手指南

安装前置工具

  • 安装 Rust:https://rustup.rs

  • 安装 Node.js 和包管理工具(npm/yarn/pnpm)

  • 安装 Tauri CLI:

    1
    cargo install create-tauri-app

创建项目

以 Vite + React + TypeScript 为例:

1
2
3
4
5
npm create vite@latest my-tauri-app -- --template react-ts
cd my-tauri-app
npm install
npx tauri init
npm run tauri dev

项目结构说明

1
2
3
4
5
my-tauri-app/
├─ src/ // 前端代码
├─ src-tauri/ // Rust 后端代码
│ ├─ tauri.conf.json // 配置文件
│ └─ main.rs // 应用入口

配置与构建

配置文件位于 src-tauri/tauri.conf.json,你可以配置窗口大小、图标、应用名称、权限限制等。

构建命令:

1
npm run tauri build

生成的可执行文件将保存在 src-tauri/target/release/bundle 下。

常用功能实践

调用后端命令

前端通过 invoke 调用 Rust 命令,命令需要在 main.rs 中通过 #[tauri::command] 注册。

文件系统操作

1
2
3
4
import { readTextFile, writeFile } from '@tauri-apps/api/fs'

await writeFile({ path: 'data.txt', contents: 'hello' })
const content = await readTextFile('data.txt')

自定义窗口

1
2
3
4
import { appWindow } from '@tauri-apps/api/window'

appWindow.minimize()
appWindow.close()

系统通知

1
2
3
import { notify } from '@tauri-apps/api/notification'

notify('任务完成!')

相关使用场景

Tauri 特别适合以下类型的桌面应用:

  • 笔记、任务、日历等工具类应用
  • Markdown 编辑器、终端工具、配置面板
  • 私有后台管理桌面客户端
  • 追求高性能和轻量部署的内部工具

不足与注意事项

  • 开发中涉及 Rust,需要一定的学习成本。
  • Webview2(Windows)需用户本地已安装,否则需额外下载。
  • 部分高级桌面功能需要手动扩展 Rust 插件。

总结

Tauri 提供了一种更现代、更轻量的方式来构建桌面应用。通过前端 + Rust 的组合,它既保留了 Web 开发的快速构建能力,又具备原生应用的性能与系统集成能力。对于需要控制体积、安全性要求高、或希望减少资源占用的项目来说,Tauri 是一个值得认真考虑的方案。

作者

Fu9Zhou

发布于

2025-06-07

许可协议