用途
本技能用于指导构建基于 Tauri 2.0 的轻量级、安全的桌面(以及移动)应用,采用 Rust 作为后端、Web 技术作为前端。适合在需要控制安装包体积、内存占用并强化安全边界的跨平台应用场景中使用。
主要能力与特点
资料提供了 Tauri 与 Electron 的对比表:
| 特性 | Tauri | Electron |
|---|---|---|
| 包体积 | 2-10 MB | 80-150 MB |
| 内存占用 | 30-80 MB | 100-300 MB |
| 后端语言 | Rust | Node.js |
| 安全模型 | 基于能力的权限 | 完整 Node.js 访问 |
| 移动支持 | 支持(Tauri 2.0) | 不支持 |
| 自动更新 | 内置 | electron-updater |
项目结构
资料给出了典型目录布局:
project/
├── src/ # 前端(任意 Web 框架)
│ ├── main.ts
│ ├── App.tsx # React/Vue/Svelte/vanilla
│ └── styles.css
├── src-tauri/ # Rust 后端
│ ├── src/
│ │ ├── main.rs # 入口点
│ │ ├── lib.rs # 命令与初始化
│ │ └── commands/ # IPC 命令模块
│ │ ├── mod.rs
│ │ └── files.rs
│ ├── capabilities/ # 安全权限
│ │ └── default.json
│ ├── icons/ # 应用图标
│ ├── Cargo.toml # Rust 依赖
│ └── tauri.conf.json # Tauri 配置
├── package.json
├── vite.config.ts # 前端打包器
└── tsconfig.json
使用方式:IPC 命令
Rust 端通过 #[tauri::command] 定义命令,并使用 tauri::generate_handler! 注册。示例包括同步的 greet、异步的 read_file,以及使用 AppHandle 与 app.path().app_config_dir() 写入配置的 save_settings。
前端通过 @tauri-apps/api/core 的 invoke 调用,如 invoke<string>('greet', { name: 'World' })、invoke<string>('read_file', { path: '/tmp/test.txt' }) 与 invoke('save_settings', { settings: {...} })。
安全模型
通过 src-tauri/capabilities/default.json 配置权限,关键原则包括:默认允许列表(前端仅能访问显式许可的 API)、文件系统访问限定目录范围、不允许任意 shell 访问(命令必须预先在 Rust 中定义)、CSP 自动设置。示例配置了 core:default、dialog:default、fs:default,并将读写文本文件限制在 $APPDATA/** 范围内。
插件与自动更新
资料列出常用插件依赖:tauri-plugin-dialog、tauri-plugin-fs、tauri-plugin-shell、tauri-plugin-store、tauri-plugin-updater、tauri-plugin-notification,并给出在 Builder 中初始化插件的方式。自动更新在 tauri.conf.json 中配置 pubkey 与 endpoints,前端可调用 @tauri-apps/plugin-updater 的 check() 后执行 downloadAndInstall() 与 relaunch()。
构建与分发
开发与构建命令:npm run tauri dev、npm run tauri build;指定目标如 x86_64-pc-windows-msvc、aarch64-apple-darwin、x86_64-unknown-linux-gnu;移动端使用 npm run tauri android dev 与 npm run tauri ios dev。分发格式:macOS 为 .dmg、.app;Windows 为 .msi、.exe(NSIS);Linux 为 .deb、.rpm、.AppImage;Android 为 .apk、.aab;iOS 为 .ipa。
适用场景与开发提示
适用于需要轻量、安全、原生性能与 Web 灵活性的桌面或移动应用。资料给出提示:用 window.__TAURI__ 检测 Tauri 环境、用 Tauri 的 State 管理 Rust 端状态、用 @tauri-apps/plugin-dialog 替代浏览器文件输入、在 tauri.conf.json 配置系统托盘、通过 WebviewWindow::new() 或 WebviewWindow.create() 创建多窗口。
限制
资料未提供收费、价格信息,未提供具体性能实测数据,未提供完整插件或 API 清单,未提供移动端平台限制的细节说明。相关资源列举了 agent-rust-expert、agent-desktop-developer 等技能及 Rust 栈指南路径。