人人都会AI编程

2.3 标准项目目录结构与职责划分

更新时间:2026-07-11

创建一个 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.devUrlbuild.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(异步运行时)等。tauritauri-build 是必须的依赖。

  • build.rs

编译脚本,在 cargo build 前运行。通常用于设置图标等静态资源。Tauri 初始化项目时已经生成好了,一般不需要修改。


根目录配置文件

  • package.json:管理前端工具链(Vite、React、Vue 等)以及 Tauri CLI。开发时你会通过 npm/pnpm/yarn 运行 tauri devtauri build
  • vite.config.ts:前端构建工具配置,需要确保 base 指向正确的路径(通常为 ./),防止生产环境资源加载失败。

开发与构建产物的流向

当你运行 npm run tauri dev 时:

  1. Vite 启动前端开发服务器,提供热更新。
  2. Tauri 启动 Rust 后端,并打开系统 WebView 窗口,指向 devUrl(通常为 http://localhost:1420)。
  3. 前后端通过 invoke 进行 IPC 通信。

当你运行 npm run tauri build 时:

  1. Vite 先构建前端,输出到 dist/
  2. Tauri CLI 读取 dist/ 并嵌入 Rust 应用的资源中。
  3. Rust 编译器编译后端代码,生成最终的二进制文件。
  4. 根据 tauri.conf.jsonbundle 配置,生成对应的安装包(.exe .msi .dmg 等)。

一句话总结src/ 是你的前端界面,src-tauri/src/ 是你的后端逻辑,tauri.conf.json 是桥梁。记住这个三层结构,再复杂的项目也能清晰地拆解和维护。