前言:为什么写这本书

这本书要帮你做成什么事

这本书只有一个目标:让你从零起步,在大约 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 开发过程中反复出现的问题。

翻页,我们开始。