Tauri 项目导航
项目结构速查
关键入口文件
| 文件 | 用途 | 何时修改 |
|---|---|---|
src-tauri/src/lib.rs |
Rust Builder 统一注册(插件/状态/Commands) | 添加新模块/插件/状态 |
src-tauri/src/commands/mod.rs |
Command 模块导出 | 添加新 Command 模块 |
src-tauri/src/commands/system.rs |
系统命令(greet/get_system_info) | 添加系统级 Command |
src-tauri/src/commands/config.rs |
配置 CRUD 命令 | 添加配置相关 Command |
src-tauri/src/services/config.rs |
配置业务逻辑 | 修改业务规则 |
src-tauri/src/database/mod.rs |
Database 结构体 | 修改数据库连接/操作 |
src-tauri/src/database/schema.rs |
Schema 迁移 | 添加/修改数据库表 |
src-tauri/src/state.rs |
AppState 定义 | 添加全局状态字段 |
src-tauri/src/error.rs |
thiserror 错误类型 | 添加新错误类型 |
src-tauri/src/models/mod.rs |
数据模型 | 添加/修改数据结构 |
src-tauri/src/main.rs |
Rust 进程入口 | 极少修改 |
src/main.tsx |
React 入口 | 添加全局 Provider |
src/App.tsx |
根组件(ConfigProvider + Router) | 修改全局配置 |
src/Router.tsx |
React Router 配置 | 添加新路由/页面 |
src/store/index.ts |
Zustand 全局状态 | 添加全局状态 |
src/lib/api/index.ts |
API 类型安全封装 | 添加新 Command 调用 |
src-tauri/tauri.conf.json |
Tauri 核心配置 | 修改窗口/打包/安全 |
src-tauri/Cargo.toml |
Rust 依赖 | 添加 Rust crate |
package.json |
前端依赖 | 添加 npm 包 |
关键目录
| 目录 | 内容 | 文件类型 |
|---|---|---|
src/ |
React 前端源码 | .tsx, .ts, .css |
src/components/layout/ |
主布局和侧边栏导航 | .tsx |
src/components/ui/ |
通用 UI 组件(ErrorBoundary 等) | .tsx |
src/hooks/ |
自定义 Hooks(useCommand 等) | .ts |
src/lib/api/ |
API 类型安全封装 | .ts |
src/pages/ |
页面组件(home/settings/about) | .tsx |
src/store/ |
Zustand 全局状态 | .ts |
src/styles/ |
TailwindCSS 全局样式 | .css |
src/types/ |
TypeScript 类型定义 | .ts |
src-tauri/src/ |
Rust 后端源码 | .rs |
src-tauri/src/commands/ |
Layer 1: IPC 入口(Command 定义) | .rs |
src-tauri/src/services/ |
Layer 2: 业务逻辑 | .rs |
src-tauri/src/database/ |
Layer 3: 数据访问(rusqlite) | .rs |
src-tauri/src/models/ |
数据模型 | .rs |
src-tauri/capabilities/ |
Tauri 权限声明 | .json |
src-tauri/icons/ |
应用图标 | .png, .ico, .icns |
public/ |
静态资源 | .svg, .png 等 |
docs/ |
项目文档 | .md |
功能定位指南
"我想添加一个新功能"
1. 定义数据模型 → src-tauri/src/models/mod.rs
2. 实现数据访问 → src-tauri/src/database/ (Layer 3)
3. 实现业务逻辑 → src-tauri/src/services/ (Layer 2, 新建或修改 .rs 文件)
4. 实现 Command → src-tauri/src/commands/ (Layer 1, 新建或修改 .rs 文件)
5. 注册 Command → src-tauri/src/lib.rs 的 generate_handler![]
6. 声明权限 → src-tauri/capabilities/default.json (如使用插件)
7. 定义 TS 接口 → src/types/index.ts
8. 添加 API 封装 → src/lib/api/index.ts
9. 实现页面组件 → src/pages/ 下新建页面目录
10. 添加路由 → src/Router.tsx
11. 添加导航入口 → src/components/layout/Sidebar.tsx
"我想添加一个 Tauri 插件"
1. Cargo.toml 添加依赖 → src-tauri/Cargo.toml
2. package.json 添加 JS 绑定 → package.json (如有)
3. 注册插件 → src-tauri/src/lib.rs 的 Builder.plugin()
4. 声明权限 → src-tauri/capabilities/default.json
5. 前端调用 → import from "@tauri-apps/plugin-xxx"
"我想修改窗口配置"
→ src-tauri/tauri.conf.json 的 app.windows 部分
"我想修改打包配置"
→ src-tauri/tauri.conf.json 的 bundle 部分
代码搜索技巧
| 想找什么 | 搜索方法 |
|---|---|
| 某个 Command 的定义 | Grep #\[tauri::command\] in src-tauri/src/commands/ |
| 某个 Command 的调用 | Grep invoke\("command_name" in src/lib/api/ |
| 所有注册的 Command | 查看 src-tauri/src/lib.rs 的 generate_handler![] 列表 |
| 某个业务逻辑 | 查看 src-tauri/src/services/ 对应模块 |
| 数据库操作 | 查看 src-tauri/src/database/ |
| 数据模型 | 查看 src-tauri/src/models/mod.rs |
| 所有插件 | Grep .plugin( in src-tauri/src/lib.rs |
| 所有权限声明 | 读取 src-tauri/capabilities/*.json |
| 全局状态定义 | 读取 src-tauri/src/state.rs(Rust)或 src/store/index.ts(前端) |
| 错误类型定义 | 读取 src-tauri/src/error.rs |
| 路由配置 | 读取 src/Router.tsx |
| API 封装 | 读取 src/lib/api/index.ts |
| Rust 依赖 | 读取 src-tauri/Cargo.toml |
| 前端依赖 | 读取 package.json |
常见错误
| 错误做法 | 正确做法 |
|---|---|
| 不知道代码在哪就开始写 | 先用导航指南定位相关文件 |
| 只改前端忘记后端 | Tauri 功能通常涉及前后端两侧 |
| 忘记注册新 Command | 添加到 generate_handler![] |
| 忘记声明权限 | 使用插件 API 前检查 Capabilities |