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

本文首发于公众号"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 就行。

bash 复制代码
// 前端直接调用 Tauri 的文件系统插件
import { readTextFile } from '@tauri-apps/plugin-fs';

const content = await readTextFile('config.json');

但如果你需要做一些重度后端逻辑------比如图像处理、大文件操作、复杂的系统调用------那你需要用 Rust 写 Command,通过 Tauri 的 IPC 机制让前端调用:

bash 复制代码
// Rust 端定义 Command
#[tauri::command]
fn greet(name: &str) -> String {
    format!("Hello, {}!", name)
}
bash 复制代码
// 前端调用
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

第二步:创建第一个项目

一行命令搞定:

bash 复制代码
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 #前端开发 #桌面端开发

相关推荐
To_OC10 小时前
别再串行写 await 了,Promise.all 才是并行请求的正确打开方式
前端·javascript·promise
vipbic10 小时前
中后台越做越乱后,我用插件化把它救回来了
前端·vue.js
Hyyy11 小时前
Computer Use 适合做什么,不适合做什么——一次真实使用后的思考
前端
小和尚同志11 小时前
前端 AI 单元测试思考与落地
前端·人工智能·aigc
invicinble12 小时前
c端系统,其实更像一个信息展示平台
前端
李姆斯13 小时前
管理是否可以被完全量化
前端·产品经理·团队管理
名字还没想好☜14 小时前
Next.js 中间件实战:鉴权、重定向与 A/B 分流
开发语言·前端·javascript·中间件·react·next.js
广州灵眸科技有限公司14 小时前
瑞芯微RV1126B开发板(EASY-EAI-PI2) INI文件操作
java·前端·javascript·网络·人工智能
江华森14 小时前
Web 开发基础:HTTP 与 REST
前端·网络协议·http
IT_陈寒15 小时前
Redis的KEYS命令把我搞崩溃了,改用SCAN才活过来
前端·人工智能·后端