创建 Tauri 项目后,你会看到一个分层的目录结构。它清晰地把“前端界面”和“Rust 后端”分隔开,让双方可以独立开发、调试和打包。
1. 前端源码目录(默认是根目录下的 src/)
前端部分的文件结构和传统 Web 项目完全一致。如果你用 create-tauri-app 并选择了 Vite + React/Vue/Svelte,目录看起来就是:
my-app/
├── src/
│ ├── App.vue (或 .jsx)
│ ├── main.js
│ ├── assets/
│ └── ...
├── index.html # 入口 HTML
├── package.json # 前端依赖
├── vite.config.ts # 构建配置
└── ...
src/:你的 UI 代码全放在这里,包括组件、路由、样式等。index.html:这是 WebView 真正加载的页面,也是 Tauri 窗口显示的起点。- 构建工具:Tauri 不限制你用什么打包工具,Vite、Webpack、Parcel 都可以。构建产物(通常是
dist/)最终会被 Tauri 嵌到原生壳中。
实用提示:你完全可以把一个已有的 Vue/React 项目改造成 Tauri 应用,只需新增一个
src-tauri/目录,并让 Tauri 的配置指向你的dist即可。
2. Rust 核心目录(src-tauri/)
这是 Tauri 应用真正的“后台”。所有与操作系统交互的逻辑、窗口管理、IPC 命令都住在这里。创建项目后你会看到:
src-tauri/
├── Cargo.toml # Rust 工程的依赖与元信息
├── tauri.conf.json # Tauri 的“总控”配置
├── build.rs # 构建脚本(通常无需修改)
├── icons/ # 应用图标(打包时使用)
└── src/
├── main.rs # Rust 入口,启动 Tauri 应用
└── lib.rs # 注册自定义命令、插件的库文件
src/main.rs:应用启动文件。一般只包含一行tauri::Builder::default().run(tauri::generate_context!()).expect("..."),保证应用能跑起来。src/lib.rs:在这里用#[tauri::command]定义可以被前端调用的函数,并通过.invoke_handler(tauri::generate_handler![my_command])注册它们。Cargo.toml:管理 Rust 依赖,例如你用到的serde、tokio、tauri-plugin-*等。需要原生能力时(如操作数据库、调用系统 API),就在这儿添加 crate。
真实体验:即使你不写 Rust 代码,也可以只用 Tauri 的插件(如
tauri-plugin-fs、tauri-plugin-shell)来获得文件系统、执行命令等能力。零 Rust 也能用,但懂一点 Rust 会让你的应用能力大幅提升。
3. 核心配置文件说明
tauri.conf.json
这是整个 Tauri 应用的神经中枢,位于 src-tauri/tauri.conf.json。常用字段如下:
build:告诉 Tauri 前端构建产物的位置和开发服务器端口。
"build": {
"devUrl": "http://localhost:5173", // 开发时的前端地址
"frontendDist": "../dist" // 构建后的产物目录(相对于配置文件)
}
tauri:窗口外观与行为设置。
"tauri": {
"windows": [{
"title": "我的应用",
"width": 800,
"height": 600,
"resizable": true
}],
"security": {
"csp": "default-src 'self'" // 内容安全策略
}
}
bundle:打包配置,决定最终生成的安装包格式。
"bundle": {
"active": true,
"targets": ["msi", "nsis"], // Windows 下生成 MSI 和 NSIS 安装包
"icon": ["icons/32x32.png", ...]
}
plugins:声明你要使用哪些 Tauri 插件(如通知、文件系统)。
最常用的一点:修改
identifier(应用唯一 ID)和app.windows[0].title就能让你的应用有自己的“身份”。打包前别忘了在tauri.conf.json里配置好bundle.targets,决定你最终交付的是.exe还是.msi。
Cargo.toml
这个文件不是 Tauri 专属,而是 Rust 项目的标准配置。但在这里你需要特别关注:
[dependencies]中是否有tauri和相关插件。- 版本号建议和 Tauri CLI 保持一致,避免兼容问题。
一句话总结:src/ 管界面,src-tauri/src/ 管后台,tauri.conf.json 把二者缝合在一起,并决定打包格式。三个目录各司其职,结构简洁,极易上手。