本文首发于公众号“Android技术圈”,非授权严禁转载
前几天聊 Android 桌面端的时候,评论区有小伙伴说:"现在用 Tauri 做桌面端很爽。"
然后好几个人跟着回复:"第一次听到 Tauri 这个词,去学习一下。"
既然大家都好奇,那我就先替你们踩踩路。花了点时间把 Tauri 官方文档翻了一遍,整理成这篇入门指南。
Tauri 到底是个啥
一句话:Tauri 是一个用 Rust 构建跨平台应用的框架。
你用熟悉的前端技术(React、Vue、Svelte 随便选)写界面,用 Rust 写后端逻辑,打包出来的应用可以跑在 Windows、macOS、Linux,甚至 Android 和 iOS 上。
听起来像 Electron?确实,它们解决的是同一个问题。但 Tauri 的思路完全不同。
Electron 的做法是把整个 Chromium 浏览器打包进你的应用。所以一个简单的 Hello World 应用,Electron 打包出来至少 100MB 起步。
Tauri 不打包浏览器。它直接调用操作系统自带的 WebView(macOS 用 WebKit,Windows 用 WebView2,Linux 用 WebKitGTK)。结果就是:
一个最小的 Tauri 应用,打包后只有 600KB。
你没看错,600KB。不是 600MB。
和 Electron 比,到底强在哪
既然都是做桌面端,那就直接对比。
体积:Tauri 应用 600KB 起步,Electron 应用 100MB 起步。差了 100 多倍。
内存占用:Tauri 用系统原生 WebView,不需要额外的浏览器进程。内存占用通常只有 Electron 的一半甚至更少。
安全性:Tauri 基于 Rust,天生内存安全。还内置了权限系统,你的前端代码不能随便访问文件系统或网络,必须在配置里显式声明权限。
前端自由度:两者都支持任意前端框架。这一点打平。
后端语言:Electron 用 Node.js,Tauri 用 Rust。Rust 性能更强,但学习曲线也更陡。
平台支持:Electron 支持 Windows、macOS、Linux。Tauri 2.0 在此基础上还加了 Android 和 iOS。
说实话,Tauri 在大部分维度上都赢了。唯一的"缺点"是需要学 Rust。但后面我会告诉你,其实入门没那么难。
它能做什么
Tauri 不只是一个"壳"。它提供了 30+ 官方插件,覆盖了桌面应用开发的几乎所有常见需求:
系统集成类:
-
• 系统托盘(System Tray)
-
• 全局快捷键
-
• 原生通知
-
• 深度链接(Deep Linking)
-
• 自动启动
数据存储类:
-
• 文件系统访问
-
• SQL 数据库
-
• 键值对存储(Store)
-
• 加密数据库(Stronghold)
网络通信类:
-
• HTTP 客户端
-
• WebSocket
-
• 文件上传
应用管理类:
-
• 自动更新(Auto Updater)
-
• 单实例控制
-
• 窗口状态管理
-
• CLI 命令行支持
除了官方插件,社区还贡献了 70+ 第三方插件。基本上你能想到的桌面端功能,都有现成的方案。
举几个用 Tauri 构建的知名应用:
-
• Cody(Sourcegraph 的 AI 编程助手)
-
• Crabnebula(应用分发平台)
-
• 还有不少独立开发者用它做工具类应用
前端开发者的最大疑问:必须学 Rust 吗
这可能是大部分前端同学最关心的问题。
答案是:看你要做什么。
如果你只是做一个简单的桌面应用——把网页包装成桌面端,加个系统托盘,加个本地存储——那你几乎不需要写 Rust。Tauri 的官方插件已经帮你封装好了,前端直接调 JavaScript API 就行。
// 前端直接调用 Tauri 的文件系统插件
import { readTextFile } from '@tauri-apps/plugin-fs';
const content = await readTextFile('config.json');
但如果你需要做一些重度后端逻辑——比如图像处理、大文件操作、复杂的系统调用——那你需要用 Rust 写 Command,通过 Tauri 的 IPC 机制让前端调用:
// Rust 端定义 Command
#[tauri::command]
fn greet(name: &str) -> String {
format!("Hello, {}!", name)
}
// 前端调用
import { invoke } from '@tauri-apps/api/core';
const result = await invoke('greet', { name: 'Tauri' });
所以 Rust 不是门槛,而是天花板。你可以从零 Rust 开始用 Tauri,等需要的时候再学。
学习路线:怎么开始
很多人听到 Tauri 的第一反应是"好是好,但学起来难吧?"
其实还好。我整理了一条从零开始的学习路线:
第一步:环境准备
不管你用什么系统,都需要安装 Rust。macOS 还需要 Xcode,Windows 需要 Visual Studio Build Tools,Linux 需要一些系统依赖。
具体步骤官方文档写得很清楚,跟着走就行:v2.tauri.app/start/prerequisites
第二步:创建第一个项目
一行命令搞定:
npm create tauri-app@latest
它会让你选前端框架(React / Vue / Svelte / Vanilla 等),然后自动生成项目模板。
第三步:理解项目结构
Tauri 项目分两部分:
-
•
src/—— 你的前端代码,和普通 Web 项目一样 -
•
src-tauri/—— Rust 后端代码和 Tauri 配置
先把前端跑起来,确认界面 OK,再去看 Rust 那边。
第四步:学会用插件
不要从零写 Rust。先用官方插件解决问题。文件读写、HTTP 请求、本地存储、系统通知……这些都有现成的插件,npm install 一下就能用。
第五步:按需学 Rust
等你发现插件满足不了需求的时候,再去学 Rust 基础。重点学所有权(Ownership)、生命周期(Lifetime)、错误处理(Result/Option)这几个核心概念就够起步了。
推荐资源:
-
• Rust 官方教程 The Rust Programming Language(免费在线)
-
• Tauri 官方文档 v2.tauri.app(写得非常好)
-
• Tauri GitHub 仓库的 examples 目录(实战参考)
适合谁用
说了这么多,Tauri 适合什么人?
前端开发者想做桌面端:这是 Tauri 最核心的目标用户。你不需要学新的 UI 框架,用现有的前端技术栈就能做出专业的桌面应用。
独立开发者做工具类产品:体积小、性能好、跨平台,非常适合做效率工具、编辑器、管理面板这类应用。
企业内部工具:比 Electron 省资源,安全性更好,适合做需要长期运行的内部工具。
想学 Rust 的同学:Tauri 是一个很好的 Rust 实战入口。你可以从前端入手,逐步深入 Rust,比直接啃 Rust 教程有趣得多。
写在最后
Tauri 不是什么新概念了,1.0 在 2022 年就发布了。但 2.0 加入移动端支持之后,它的想象空间一下子大了很多。
一个框架,一套代码,Desktop + Mobile 全覆盖。再加上 Rust 的性能和安全性加持,说它是 Electron 最强替代并不夸张。
当然,它也不是完美的。Rust 的学习曲线、WebView 的兼容性差异、生态规模和 Electron 相比还有差距——这些都是需要考虑的。
但至少,它给了我们一个新的选择。
你用过 Tauri 吗?或者你在用什么做桌面端开发?欢迎评论区聊聊!