应用端实验室桌面应用
00 / 00

桌面端必懂基础

理解 Tauri 桌面应用的核心概念:窗口、命令、权限、存储和更新

你将学到

  • 桌面应用和普通网页应用有什么本质区别
  • Tauri 的 7 个核心概念分别是什么、为什么要关心
  • 浏览器预览和 Tauri 原生窗口各自的边界
  • 改造模板时应该按什么顺序动手
  • 新手最容易踩的几个坑

桌面应用是什么

桌面应用就是"一个带系统能力的本地窗口"。界面还是用 React 写,后端还是复用 01MVP Web/API,但多了一层本地 runtime:读文件、打开目录、托盘常驻、自动更新、系统权限和安装包。

最容易低估的一件事:桌面端不是套个壳就完事。只要你要发给真实用户,本地权限、存储位置、签名、公证和更新都得认真搞。

核心分工很简单:

  • 界面仍然是前端 -- React 负责窗口里的页面、按钮、表单和数据展示。
  • 系统能力要走 Tauri -- 文件、托盘、打开目录、进程和权限,不能当普通网页能力处理。
  • 发布是工程问题 -- DMG、EXE、签名、公证、更新端点,都要在发布前纳入验收。

一张图看懂桌面端

React 界面  -->  Runtime Adapter  -->  Tauri Command  -->  操作系统
页面/表单/状态    浏览器和 Tauri 的分界    调用本地能力       文件/权限/更新

关键是中间两层。普通网页没有 Tauri runtime,不能随便读写用户电脑。模板把"界面"和"系统能力"分开,这样调试时更容易定位问题出在哪一层。

先搞懂这 7 个概念

Tauri 官方文档把桌面应用拆成前端、Rust 后端、配置和能力边界几部分。你不用一开始就精通 Rust,但要知道系统能力不能散落在页面里。下面这张表帮你快速建立直觉:

概念新手理解方式为什么重要
Tauri把 Web 前端变成桌面应用的框架让 React 界面拥有本地窗口和系统能力
Window用户看到的应用窗口尺寸、标题、全屏、关闭行为都要配置
Command前端请求本地能力的入口例如打开 app data 目录、读写配置、调用系统功能
CapabilityTauri 的权限清单限制前端能调用哪些本地能力,不给的就调不了
App Data应用的本地数据目录放偏好设置、缓存、离线资料,用户删不掉
Keychain系统级安全存储放 token、敏感凭据,比文件存储安全得多
Updater自动更新机制用户安装后不应该每次手动下载安装包

先记住一句话:Capability 控制边界,Command 是通道,App Data 和 Keychain 管存储,Updater 管后续迭代。

浏览器预览 vs Tauri 原生窗口

开发时有两个模式,各管各的:

浏览器预览适合看页面布局、调按钮和表单、检查 Tailwind 样式、让没有 Rust 环境的人先看 UI。但浏览器里没有真实 Tauri runtime,模板会用 fallback 存偏好。

Tauri 原生窗口必须验证本地 command 是否可用、capabilities 是否放行、托盘和窗口行为是否正常、打包后的安装包是否能启动。

浏览器能跑通不等于桌面端完成。浏览器只能说明 UI 和网络请求大概没问题;Tauri command、系统权限、安装包和自动更新必须在原生窗口或打包产物里验。

发布前会遇到的账号和证书

桌面端可以很快跑起 UI,但公开分发时会遇到平台信任问题。用户电脑会问:这个安装包是谁发的、有没有被篡改、能不能自动更新。

名称用途什么时候准备
Apple Developer ProgrammacOS 签名、公证、Gatekeeper 信任准备公开发 macOS 安装包前
Windows 代码签名证书.exe / .msi 签名,降低安全警告准备公开发 Windows 安装包前
文件服务器托管安装包和更新文件做下载页或自动更新前

内部测试可以先跳过签名和商店,直接生成安装包给自己或团队验。但只要面向真实用户,签名、公证和更新路径就要进入发布计划。

改造顺序

当你准备把模板改成自己的产品时,按这个顺序来:

先改应用身份 -- 产品名、identifier、窗口标题、图标、Bundle 信息和安装包显示名。这些改完,应用看起来就像你自己的了。

再接 Web/API -- 配置 VITE_DESKTOP_SERVER_URL,验证 health、登录、profile 和会员状态都走通。

再加本地能力 -- 每新增一个系统能力,都同步更新 Tauri command、capability、前端 adapter 和验收说明。

最后做发布工程 -- 签名、公证、安装包、自动更新端点和多平台 QA 一起处理。

常见坑

把所有 Tauri 调用写进页面 -- 应该放进 runtime adapter,页面只调用清晰的方法。这样换平台时改一个地方就行。

本地数据乱放 -- 偏好和缓存放 app data,敏感凭据后续接 Keychain。不要什么文件都往用户桌面扔。

忽略签名和自动更新 -- 真实分发前要准备证书、公证、更新端点和回滚方案。这些不是"以后再说"的事。

下一步

对桌面端有了整体印象后,去 快速开始 把项目跑起来,实际看看浏览器预览和 Tauri 原生窗口分别长什么样。

想深入架构细节可以看 项目结构Runtime 与权限

官方参考

想和其他创造者交流?

这篇文档有问题?