6.3 练习路线与进阶资源

原文链接: Learn

6.3 练习路线与进阶资源

到这里,你已经看完了一套完整的 Tauri 地图。但“看懂”和“掌握”之间还差几次亲手练习。

推荐的四个递进练习

练习一:计数器应用(1–2 小时)

目标:理解 Command、注册与状态。

实现一个带按钮的页面:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
use std::sync::Mutex;

struct Counter {
    value: Mutex<i32>,
}

#[tauri::command]
fn increment(counter: tauri::State<Counter>) -> i32 {
    let mut value = counter.value.lock().unwrap();
    *value += 1;
    *value
}

#[cfg_attr(mobile, tauri::mobile_entry_point)]
pub fn run() {
    tauri::Builder::default()
        .manage(Counter {
            value: Mutex::new(0),
        })
        .invoke_handler(tauri::generate_handler![increment])
        .run(tauri::generate_context!())
        .expect("运行 Tauri 应用时出错");
}

前端用一个按钮调用:

1
2
3
4
5
6
import { invoke } from '@tauri-apps/api/core';

document.querySelector('#add').addEventListener('click', async () => {
  const count = await invoke('increment');
  document.querySelector('#count').textContent = count;
});

要求:

  • 能连续点击并计数;
  • 窗口关闭再打开后计数仍保留(提示:把状态写进文件或 Store 插件)。

练习二:Markdown 笔记(半天)

目标:理解权限、文件系统插件与异步 UI。

功能建议:

  1. 左侧笔记列表;
  2. 右侧编辑区;
  3. 新建/保存/删除笔记;
  4. 保存到 BaseDirectory.AppData;
  5. 用 @tauri-apps/plugin-dialog 导出文件。

这个练习会逼你把 4.5 权限系统 和 6.1 插件 真正用起来。

练习三:多窗口 + 托盘 + 快捷键(1 天)

功能建议:

  1. 主窗口最小化到托盘;
  2. 托盘菜单含“打开设置”“退出”;
  3. 注册全局快捷键(macOS 用 Cmd,Windows/Linux 用 Ctrl,组合 Cmd/Ctrl+Shift+N)新建笔记;
  4. 设置窗口与主窗口通过事件通信。

这一步能把 4.3 事件与 Channels 的知识串起来,也是“桌面感”最强的练习。

练习四:移动端适配(1–2 天)

在 M4 MacBook 上完成:

1
2
3
4
npm run tauri android init
npm run tauri ios init
npm run tauri android dev
npm run tauri ios dev

观察:

  • gen/android/ 与 gen/apple/ 的目录差异;
  • 哪些插件在移动端不可用;
  • 触摸交互与桌面鼠标交互的差异;
  • 平台签名与权限声明。

学习路线总图

flowchart LR
    A["第 1 章:认识与选型"] --> B["第 2 章:环境"]
    B --> C["第 3 章:快速开始"]
    C --> D["第 4 章:核心概念"]
    D --> E["第 5 章:平台构建"]
    E --> F["第 6 章:插件与分发"]
    F --> G["持续练习 + 看源码"]

高频命令速查

想做什么命令
桌面开发npm run tauri dev
桌面打包npm run tauri build
添加官方插件npm run tauri add fs
重新生成图标npm run tauri icon ./icon.png
Android 初始化/开发npm run tauri android init / npm run tauri android dev
iOS 初始化/开发npm run tauri ios init / npm run tauri ios dev
环境自检npm run tauri info(或安装 Cargo 版后用 cargo tauri info)

常用排查顺序

遇到“前端调不到 Rust”的问题时,按这个顺序查:

  1. Rust 命令是否注册进 invoke_handler;
  2. 前端 invoke 的命令名是否一致;
  3. 参数名是否符合 camelCase 映射;
  4. 是否缺少 capability 权限;
  5. 是否在异步命令中误用了借用类型;
  6. 查看 Rust 控制台与 Web Inspector 的错误。

值得收藏的官方资源

资源地址/说明
官方首页https://tauri.app
创建项目https://tauri.app/start/create-project/
Calling Rusthttps://tauri.app/develop/calling-rust/
Calling Frontendhttps://tauri.app/develop/calling-frontend/
配置参考https://tauri.app/reference/config/
CLI 参考https://tauri.app/reference/cli/
JS API 参考https://tauri.app/reference/javascript/api/
插件列表https://tauri.app/plugin/
分发指南https://tauri.app/distribute/
学习教程https://tauri.app/learn/
Tauri GitHubhttps://github.com/tauri-apps/tauri

最后几句建议

  1. 不要把 Tauri 当“套网页”工具。它的价值来自 Rust 后端、IPC 与权限模型。
  2. 每学一个新 API,先问权限:默认能否调用?Scope 够不够小?
  3. 多读生成代码:gen/android、gen/apple 都是真实工程,目录结构与配置值得观察。
  4. 在 M4 Mac 上至少各跑一遍 Android 与 iOS 模拟器,平台差异才会真正进入你的肌肉记忆。
  5. 遇到错误先查 npm run tauri info,它会把 Rust/Node/系统环境一次性列出来。

祝你玩得开心。Tauri 的文档、插件与社区都在快速增长,保持“项目驱动”的学习方式,会比逐页通读更快见效。