创建一个 Tauri 项目后,你会得到一个固定的目录骨架。理解每个部分的职责,能帮你快速定位代码、避免互相覆盖导致的问题,也方便团队协作。下面是一个标准 Tauri 2.x 项目的结构示例(基于 npm create tauri-app 生成的默认模板):
my-tauri-app/
├── public/ # 静态资源,直接拷贝到输出目录
├── src/ # 前端源代码(React/Vue/Svelte 等)
│ ├── App.css
│ ├── App.tsx
│ ├── main.tsx # 前端入口,挂载 React/Vue 等
│ └── vite-env.d.ts
├── src-tauri/ # Tauri 后端(Rust 代码及配置)
│ ├── icons/ # 应用图标,用于各平台打包
│ ├── src/
│ │ ├── lib.rs # 后端主逻辑,注册命令、配置应用
│ │ └── main.rs # Rust 入口,启动 Tauri 应用
│ ├── Cargo.toml # Rust 依赖管理
│ ├── tauri.conf.json # Tauri 全局配置文件(窗口、安全、打包等)
│ ├── capabilities/ # 权限能力定义(仅 Tauri 2.x,可选)
│ └── build.rs # 编译脚本(通常自动生成)
├── index.html # HTML 入口,WebView 加载此文件
├── package.json # Node.js 依赖和脚本
├── tsconfig.json # TypeScript 配置
├── vite.config.ts # 前端构建工具配置(Vite)
└── README.md
下面按区域说明各自的职责。
前端区域(src/、public/、index.html)
这部分完全是你熟悉的前端工作区,Tauri 不做任何侵入。
index.html:是整个桌面应用的 HTML 入口,WebView 打开的就是这个文件。它通常通过<script>标签引入你的前端主入口。src/main.tsx(或main.js):前端应用的启动代码,挂载 React、Vue 等组件树。public/:放不参与打包编译的静态资源(如图标、字体),构建时会原样复制到输出目录。
你完全可以按照已有的前端工程习惯组织 src/ 内的目录结构,Tauri 只关心最终构建出的 HTML/CSS/JS 产物。
Tauri 核心区域(src-tauri/)
这是 Rust 后端和 Tauri 配置的大本营,也是区别于纯前端项目的地方。
src/main.rs
Rust 程序的入口。代码通常只有几行,它调用 tauri::Builder 并启动应用。任何需要初始化的逻辑(比如创建系统托盘、注册全局插件)都在这里完成。
src/lib.rs
应用命令(commands)的定义位置。你用 #[tauri::command] 声明的函数,都会在这里被收集并注册到 tauri::Builder 中。也用来存储应用状态、数据库连接等。前端通过 IPC 调用的所有 Rust 函数,都应该放在这个文件或被它引用的模块中。
tauri.conf.json
整个 Tauri 应用的“控制中心”。常用配置包括:
app.withGlobalTauri:是否注入全局TAURI对象build.devUrl和build.frontendDist:开发时的网址和构建后前端产物目录app.windows:窗口属性(大小、标题、是否可拖拽边框等)app.security:权限和内容安全策略bundle:打包时生成的安装包格式(msi、dmg、deb 等)及图标路径
capabilities/(Tauri 2.x)
用于声明“能力”文件,将某组权限赋予某个窗口或整个应用。这是一种比旧版白名单更清晰的权限模型,你可以在里面对文件读写、网络访问等进行细粒度的开关控制。
icons/
应用图标源文件,Tauri CLI 会根据它们自动生成各平台需要的尺寸和格式。建议放一张 1024×1024 的 PNG,打包时会自动缩放。
Cargo.toml
Rust 的依赖管理文件,就像 package.json 一样。你可以在这里添加需要的 Rust crate,比如 serde(序列化)、tokio(异步运行时)等。tauri 和 tauri-build 是必须的依赖。
build.rs
编译脚本,在 cargo build 前运行。通常用于设置图标等静态资源。Tauri 初始化项目时已经生成好了,一般不需要修改。
根目录配置文件
package.json:管理前端工具链(Vite、React、Vue 等)以及 Tauri CLI。开发时你会通过 npm/pnpm/yarn 运行tauri dev或tauri build。vite.config.ts:前端构建工具配置,需要确保base指向正确的路径(通常为./),防止生产环境资源加载失败。
开发与构建产物的流向
当你运行 npm run tauri dev 时:
- Vite 启动前端开发服务器,提供热更新。
- Tauri 启动 Rust 后端,并打开系统 WebView 窗口,指向
devUrl(通常为http://localhost:1420)。 - 前后端通过
invoke进行 IPC 通信。
当你运行 npm run tauri build 时:
- Vite 先构建前端,输出到
dist/。 - Tauri CLI 读取
dist/并嵌入 Rust 应用的资源中。 - Rust 编译器编译后端代码,生成最终的二进制文件。
- 根据
tauri.conf.json的bundle配置,生成对应的安装包(.exe .msi .dmg 等)。
一句话总结:src/ 是你的前端界面,src-tauri/src/ 是你的后端逻辑,tauri.conf.json 是桥梁。记住这个三层结构,再复杂的项目也能清晰地拆解和维护。