Tauri 项目结构前端壳 + Rust 内核,怎么协作、怎么构建、怎么扩展

1. 顶层(前端工程):就是一个普通的 Web 项目

Tauri 的项目结构非常“工程化”:通常由两部分组成

  • 可选的 JavaScript/前端工程(负责 UI,最终产出静态资源)
  • 必须的 Rust 工程(在 src-tauri/,负责窗口、系统能力、打包分发、安全边界)

一个典型目录长这样(你贴的结构非常标准):

. ├── package.json ├── index.html ├── src/ │ ├── main.js ├── src-tauri/ │ ├── Cargo.toml │ ├── Cargo.lock │ ├── build.rs │ ├── tauri.conf.json │ ├── src/ │ │ ├── main.rs │ │ └── lib.rs │ ├── icons/ │ │ ├── icon.png │ │ ├── icon.icns │ │ └── icon.ico │ └── capabilities/ │ └── default.json 

顶层的 package.json / index.html / src/main.js 和你做一个静态站点或 SPA 没本质区别。你可以用 Vite、Webpack、Next(需适配静态导出)、SvelteKit 等,只要最终能产出静态资源给 Tauri 加载即可。

核心心智模型:

  • 你在开发模式下跑的是 dev server(热更新、调试体验好)
  • 你在构建时要先把前端编译成静态文件(dist 等),再由 Rust 侧打包进应用

所以前端这部分可以自由替换,Tauri 不绑架框架。

2. src-tauri(Rust 工程):这是 Tauri 的“应用外壳 + 能力层”

src-tauri/ 是一个标准 Cargo 项目,只是比普通 Rust 项目多了几类 Tauri 专用文件夹/配置文件。

2.1 tauri.conf.json:Tauri 的总控配置中心

它是最核心的配置文件,典型会包含:

  • 应用 identifier(包名/唯一标识)
  • 窗口标题、窗口行为
  • dev server URL(开发模式加载哪个地址)
  • 构建时静态资源目录
  • 打包配置(安装包类型、签名、图标路径、权限等)

同时,它还是 Tauri CLI 定位 Rust 工程的“标记文件”。CLI 本质上就是先找到 tauri.conf.json,再按配置去启动前端、编译 Rust、打开窗口。

你在项目里最常改动的地方之一就是它。

2.2 capabilities/:安全模型的“许可清单”(命令 allowlist 的关键落点)

这块非常重要,但很多人刚上手会忽略。

一句话:你在 JS 里想调用 Rust 命令(invoke),必须在 capability 文件里允许它。
所以 capabilities/default.json 本质上就是“你的应用允许暴露哪些能力给前端”。

这套机制的价值:

  • 把“前端能做什么”变成显式声明,而不是默认全开
  • 更适合做企业级的权限治理与审计
  • 也让你在插件/命令越来越多时不至于失控

工程建议:

  • 命令按模块分组,不要一股脑全塞 default
  • 对敏感能力(文件系统、执行外部命令、系统信息、网络访问等)单独 capability,方便环境隔离(dev/production、内部版/外部版)

2.3 icons/:应用图标的默认输出与引用目录

通常你会用 tauri icon 之类的命令从一张源图生成多平台图标,输出到 src-tauri/icons/,然后在 tauri.conf.json > bundle > icon 里引用。

建议:

  • 源图尽量用高分辨率正方形(例如 1024×1024 PNG)
  • 图标生成后别手动改一堆尺寸文件,重新生成更可控

2.4 build.rs:接入 Tauri 构建系统的“挂钩”

build.rs 一般会调用 tauri_build::build(),用于:

  • 让 Cargo 在构建时执行 Tauri 的一些构建步骤
  • 参与资源打包/配置生成等流程

你多数时候不需要改它,除非你做很深的构建定制。

2.5 src/lib.rs:你真正该写 Rust 业务逻辑的地方(尤其是移动端)

这里是很多人第一次看到会疑惑的点:为什么不把逻辑写在 main.rs

原因是移动端构建方式不同:

  • 移动端会把你的应用编译成 library,由平台框架(iOS/Android)加载
  • 因此需要一个可复用的入口函数,放在 lib.rs 更合理
  • 你会看到类似 #[cfg_attr(mobile, tauri::mobile_entry_point)] 的标记,用于移动端入口

实践结论很明确:

  • 业务命令(commands)、插件初始化、状态管理等,优先写在 lib.rs
  • 让桌面与移动共用同一套初始化逻辑,减少分叉

2.6 src/main.rs:桌面端入口,尽量别改

通常 main.rs 只做一件事:调用 app_lib::run()(或者你的库名对应的 run)。
文档也强调了:为了让桌面端复用移动端同一入口,main.rs 保持简单,别动它,改 lib.rs

这里的 app_lib 对应 Cargo.toml 里的 [lib.name],也就是你的库 crate 名。

3. Tauri 的构建流程:像“静态站点托管器”一样工作

把 Tauri 想成一个“带系统能力的静态站点宿主”会特别好理解:

开发模式(dev):

  • 启动前端 dev server(如 Vite 5173)
  • Tauri 窗口加载 dev server URL
  • 你改前端代码热更新;你改 Rust 代码触发重编译/重启

构建模式(build/bundle):

  1. 先把前端编译成静态文件(dist)
  2. 再编译 Rust 工程
  3. Rust 把静态资源打包进最终应用(并按配置输出安装包/可执行文件)

所以前端这边你要做的事情,和“发布一个静态网站”高度一致:构建产物、资源路径、路由模式(history/hash)这些依旧是关键点。

4. 如果你只想写 Rust,不要前端怎么办

可以,Tauri 也支持“纯 Rust UI/前端生态”的路线(例如 Yew/Leptos/Sycamore),甚至你可以把顶层 JS 工程完全删掉:

  • 直接把 src-tauri/ 当成仓库根目录
  • 或把它作为 Rust workspace 的一个 member

这时你的项目就是纯 Cargo 结构,Tauri 仍然负责窗口与 WebView,但 UI 的生成方式由 Rust 侧前端方案决定。

5. 工程落地小建议:让结构更“可维护”

如果你准备做中大型应用,我建议你从一开始就把边界划清:

  • 前端:只负责 UI 与状态,不直接接触敏感能力
  • Rust:用 commands 暴露最小能力面,所有权限控制、输入校验、文件路径规范化都放 Rust
  • capabilities:把“能调用什么”当成发布治理点,代码评审时重点看它有没有被滥开

Read more

AI 驱动游戏:鸿蒙生态的机会在哪里?

AI 驱动游戏:鸿蒙生态的机会在哪里?

子玥酱(掘金 / 知乎 / ZEEKLOG / 简书 同名) 大家好,我是子玥酱,一名长期深耕在一线的前端程序媛 👩‍💻。曾就职于多家知名互联网大厂,目前在某国企负责前端软件研发相关工作,主要聚焦于业务型系统的工程化建设与长期维护。 我持续输出和沉淀前端领域的实战经验,日常关注并分享的技术方向包括前端工程化、小程序、React / RN、Flutter、跨端方案, 在复杂业务落地、组件抽象、性能优化以及多端协作方面积累了大量真实项目经验。 技术方向:前端 / 跨端 / 小程序 / 移动端工程化 内容平台:掘金、知乎、ZEEKLOG、简书 创作特点:实战导向、源码拆解、少空谈多落地 文章状态:长期稳定更新,大量原创输出 我的内容主要围绕 前端技术实战、真实业务踩坑总结、框架与方案选型思考、行业趋势解读 展开。文章不会停留在“API 怎么用”,而是更关注为什么这么设计、在什么场景下容易踩坑、

CherryStudio使用指南——详细教程让你玩懂AI

CherryStudio使用指南——详细教程让你玩懂AI

文章目录 * 为什么使用? * 下载 * 安装 * 使用 * 添加模型 * API 调用 * 本地调用 * 测试使用 * 联网功能 * 添加网络搜索 * 使用网络搜索 * 数据设置 * MCP 使用 * 知识库 * 添加重排模型 * 添加知识库 * 使用知识库 * 迁移配置 * 备份 * 使用备份 为什么使用? CherryStudio 就相当于一个 AI 的合集,能够集合多模型对话,知识库管理,AI 绘画等各种功能的一个集合工具。 而且内容都是本地的,隐私性是拉满了。 当然,主要目的还是为了提升工作效率。 下载 客户端下载 | CherryStudio 直接进入该网站进行下载。 安装 双击下载的 exe 文件。 为所有用户安装,点击下一步。 可以更改一下路径,不用默认安装在 C 盘。

AI代码安全新纪元:Claude Code Security深度解析与实战指南

📋 摘要 2026年2月,Anthropic正式推出Claude Code Security——一款基于Claude Opus 4.6大模型的AI原生代码安全解决方案。这不仅是AI辅助编程领域的一次重大升级,更是向传统网络安全行业投下的“重磅炸弹”。本文将从技术原理、核心功能、实战应用、行业影响四个维度,深度解析这款颠覆性工具如何重新定义代码安全检测标准。我们将探讨其如何通过深度语义理解突破传统规则匹配的局限,如何实现“扫描-验证-修复”全流程自动化,以及它对企业安全实践带来的深刻变革。无论你是开发者、安全工程师还是技术决策者,本文都将为你提供全面、专业、可操作的指导。 🔑 关键字 AI代码安全、Claude Code Security、静态应用安全测试、漏洞扫描、智能补丁生成、DevSecOps 🌅 引言:传统安全工具的黄昏与AI黎明的曙光 在AI辅助编程导致代码生成速度成倍增长的今天,传统代码安全工具正面临前所未有的结构性矛盾。据统计,2024年全球报告的CVE(公共漏洞和暴露)数量已超过40,000个,且这个数字还在加速增长。然而,传统安全工具要么只能做浅层的

2026年3月大模型全景深度解析:国产登顶、百万上下文落地、Agent工业化,AI实用时代全面来临[特殊字符]

2026年3月大模型全景深度解析:国产登顶、百万上下文落地、Agent工业化,AI实用时代全面来临[特殊字符]

🔥个人主页:北极的代码(欢迎来访) 🎬作者简介:java后端学习者 ❄️个人专栏:苍穹外卖日记,SSM框架深入,JavaWeb ✨命运的结局尽可永在,不屈的挑战却不可须臾或缺! 前言: 2026年3月,全球大模型领域迎来颠覆性变革——国产模型实现全球调用量反超,百万上下文从“实验室概念”变成“工业级标配”,Agent智能体摆脱“玩具级应用”,正式进入千行百业。本文将从行业格局、核心技术、产业落地 3大维度,结合具体产品参数、技术细节和实战案例,全面拆解当前大模型最新动态,帮开发者精准把握AI时代红利(干货密集,建议收藏反复研读)。 一、行业炸点:国产大模型历史性反超,全球格局彻底重塑(附权威数据) 2026年3月,OpenRouter(全球最大AI模型调用统计平台)、斯坦福HAI研究院联合发布《全球大模型发展月报》,核心数据颠覆行业认知:中国大模型周调用量达4.69万亿Token,同比增长320%,连续两周超越美国(4.21万亿Token),全球调用量TOP10中,