第一次听到 Tauri 这个词,去学习一下

0 阅读6分钟

本文首发于公众号“Android技术圈”,非授权严禁转载

前几天聊 Android 桌面端的时候,评论区有小伙伴说:"现在用 Tauri 做桌面端很爽。"

然后好几个人跟着回复:"第一次听到 Tauri 这个词,去学习一下。"

Image

既然大家都好奇,那我就先替你们踩踩路。花了点时间把 Tauri 官方文档翻了一遍,整理成这篇入门指南。

Tauri 到底是个啥

一句话:Tauri 是一个用 Rust 构建跨平台应用的框架。

你用熟悉的前端技术(React、Vue、Svelte 随便选)写界面,用 Rust 写后端逻辑,打包出来的应用可以跑在 Windows、macOS、Linux,甚至 Android 和 iOS 上。

听起来像 Electron?确实,它们解决的是同一个问题。但 Tauri 的思路完全不同。

Image

Electron 的做法是把整个 Chromium 浏览器打包进你的应用。所以一个简单的 Hello World 应用,Electron 打包出来至少 100MB 起步。

Tauri 不打包浏览器。它直接调用操作系统自带的 WebView(macOS 用 WebKit,Windows 用 WebView2,Linux 用 WebKitGTK)。结果就是:

一个最小的 Tauri 应用,打包后只有 600KB。

你没看错,600KB。不是 600MB。

和 Electron 比,到底强在哪

既然都是做桌面端,那就直接对比。

Image

体积: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 命令行支持

Image

除了官方插件,社区还贡献了 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 的第一反应是"好是好,但学起来难吧?"

其实还好。我整理了一条从零开始的学习路线:

Image

第一步:环境准备

不管你用什么系统,都需要安装 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 吗?或者你在用什么做桌面端开发?欢迎评论区聊聊!

#跨平台开发 #Tauri #Rust #前端开发 #桌面端开发