前言:为什么写这本书
这本书要帮你做成什么事
这本书只有一个目标:让你从零起步,在大约 3–6 个月内,成长为能胜任 Tauri 高级岗位的工程师。判断标准不是「看完了几章」,而是:
- 你能独立设计并实现一个中型桌面应用的架构,包括前端、IPC、状态、持久化、打包、签名、自动更新。
- 面试时被问到 Tauri 2.x 的 Capabilities、ACL、Isolation、自定义 URI Scheme、进程模型、WebView 差异,你能答得清清楚楚。
- 面对真实项目里的坑——WebView 兼容、音视频权限、跨平台路径、签名证书、沙箱、性能瓶颈,你知道该从哪里入手排查。
为了把这件事做实,我们不是做玩具 demo,而是贯穿始终一个生产级项目:一款仿「网易云音乐」风格的跨平台桌面音乐播放器,我给它起名叫 CloudTone(云音)。
CloudTone 到底有多「生产级」
CloudTone 并不是一个「能响一下就算完事」的小播放器。它会包含下面这些真实项目里才会遇到的模块:
- 音频引擎:基于 Rust
symphonia解码 +cpal音频输出,支持 MP3/FLAC/AAC/OGG 等格式,支持 seek、淡入淡出、无缝切歌、ReplayGain。 - 音乐库管理:递归扫描本地目录,读取 ID3/FLAC/Vorbis 元数据,抽取封面并入库。
- 数据库:SQLite +
sqlx,包含歌曲、专辑、艺人、歌单、播放历史、收藏、设置等七八张表,带数据库迁移。 - 歌词引擎:LRC 解析、逐行/逐字高亮、滚动同步,并支持桌面歌词悬浮窗。
- 搜索:本地全文搜索(FTS5)+ 在线音源搜索(可插拔 Provider)。
- 播放队列:支持随机、循环、单曲循环、列表循环、心动模式、记忆上次播放位置。
- 系统集成:全局媒体键、OS 原生媒体控制(macOS Now Playing、Windows SMTC、Linux MPRIS)、系统托盘、迷你播放器。
- 下载管理:并发下载、断点续传、磁盘缓存策略。
- 均衡器:10 段 EQ、预设保存。
- 在线服务:抽象的 Provider 接口,可以接入第三方音源 API,也可以写插件扩展。
- 插件系统:通过 JSON manifest + 动态权限申请,让第三方可以写扩展(这是很多公司音乐类产品的面试题)。
- 基础设施:日志分级 + 滚动写入、错误上报、自动更新、多平台打包签名、CI/CD。
做完这个项目,你写过的代码量大概在 2–3 万行之间——和真实工作项目量级相当。
我假设你是谁
- 你不会 HTML/CSS/JS,一点都不会。没关系,第 3、4、5、6 章就是专门为你准备的,够用不多讲。
- 你对 Rust 比较熟练,所以我不会从
Ownership从头讲起;但第 7 章会重点回顾async、Send、Sync、Pin、trait object等在 Tauri 开发中踩坑最多的地方。 - 你已经安装了一台现代电脑,macOS / Windows / Linux 三系统里任意一个都能跑完本书全部代码。
关于版本
- Tauri:2.x(v1 的 API、权限模型都变了很多,本书不兼顾 v1,但在关键处提醒差异)。
- Rust:edition 2021,稳定版(1.77+)。
- Node.js:20 LTS 起步。
- React:18 / 19,使用函数组件 + Hooks。
- 打包器:Vite 5 / 6。
截止 2026 年,这套组合是社区主流,也是招聘端最看重的。
如何读这本书
- 不要只看。每章末尾会有「动手时刻」,必须跟着敲。Tauri 这类工程化极强的技术栈,看十遍不如自己跑一遍来得深刻。
- 不要跳章。尤其是第 13 章 Capabilities、第 16 章并发、第 32 章
custom://协议,是初学者最爱跳过也最容易踩坑的地方。 - 遇到报错先查「常见陷阱」。附录 A 的 FAQ 汇总了 CloudTone 开发过程中反复出现的问题。
翻页,我们开始。