tauri-best-practices
npx skills add https://github.com/krissss/skills --skill tauri-best-practices
Agent 安装分布
Skill 文档
Tauri æä½³å®è·µ
åè½æ¦è¿°
Tauri è·¨å¹³å°æ¡é¢åºç¨å¼åæä½³å®è·µã
ð¡ å建æ°é¡¹ç®è¯·ä½¿ç¨ tauri-create æè½ã
æ ¸å¿åå
1. ä¼å ä½¿ç¨ JS æä»¶ï¼é¿å ç¼å Rust 代ç
为ä»ä¹ï¼
- åå°ç¼è¯æ¶é´
- éä½ Rust å¦ä¹ ææ¬
- Tauri 2.x æä»¶çæå·²å®å
常ç¨å®æ¹æä»¶ï¼
| æä»¶ | åè½ | å®è£ å½ä»¤ |
|---|---|---|
shell |
æå¼ URLãæ§è¡å½ä»¤ | pnpm tauri add shell |
fs |
æä»¶ç³»ç»è®¿é® | pnpm tauri add fs |
dialog |
æä»¶å¯¹è¯æ¡ | pnpm tauri add dialog |
notification |
ç³»ç»éç¥ | pnpm tauri add notification |
clipboard |
åªè´´æ¿æä½ | pnpm tauri add clipboard-manager |
http |
HTTP è¯·æ± | pnpm tauri add http |
store |
æ°æ®æä¹ å | pnpm tauri add store |
window-state |
çªå£ç¶æè®°å¿ | pnpm tauri add window-state |
ð 宿´æä»¶å表ï¼https://v2.tauri.app/zh-cn/plugin/
注æäºé¡¹ï¼
- æä»¶å®è£
éå¶ï¼
pnpm tauri add䏿¬¡åªè½æ·»å ä¸ä¸ªæä»¶
pnpm tauri add clipboard-manager
pnpm tauri add window-state
- æä»¶å¯¼å ¥æ¹å¼ï¼åå ¨é¨å¯¼å ¥åè§£æå¯¼å ¥
// 导å
¥å
¨é¨æ¹æ³
import * as Clipboard from '@tauri-apps/plugin-clipboard-manager'
// ç¶å使ç¨
await Clipboard.writeText(text)
// è§£æå¯¼å
¥
import { writeText, readText } from '@tauri-apps/plugin-clipboard-manager'
2. å端å°è£ API å±ï¼æ¯ææµè§å¨å¼å
æ¶æè®¾è®¡ï¼
src/
âââ api/
â âââ clipboard.ts # å°è£
好çåªè´´æ¿ API
âââ lib/
â âââ platform.ts # ç¯å¢æ£æµ
âââ main.ts
å®ç°ç¤ºä¾ï¼
// src/lib/platform.ts
export const isTauri = () => '__TAURI__' in window
// src/api/clipboard.ts
import * as Clipboard from '@tauri-apps/plugin-clipboard-manager'
import { isTauri } from '@/lib/platform'
export async function writeText(text: string): Promise<void> {
if (isTauri()) {
await Clipboard.writeText(text)
} else {
await navigator.clipboard.writeText(text)
}
}
export async function readText(): Promise<string> {
if (isTauri()) {
return await Clipboard.readText()
} else {
return await navigator.clipboard.readText()
}
}
// 使ç¨
import { writeText, readText } from '@/api/clipboard'
await writeText('Hello')
Web 䏿¯æçå¤çæ¹å¼ï¼
// æ¹å¼ 1ï¼è¿åé»è®¤å¼/Mock æ°æ®
export async function getAppVersion(): Promise<string> {
if (isTauri()) {
return await app.getVersion()
}
return '0.0.0-browser' // å¼åæ¶ä½¿ç¨æ¨¡æå¼
}
// æ¹å¼ 2ï¼æåºæç¡®é误
export async function readFile(path: string): Promise<string> {
if (isTauri()) {
return await fs.readTextFile(path)
}
throw new Error('File API ä»
卿¡é¢ç«¯å¯ç¨')
}
// æ¹å¼ 3ï¼æä¾éçº§æ¹æ¡
export async function saveData(key: string, value: string): Promise<void> {
if (isTauri()) {
await fs.writeTextFile(`data/${key}.txt`, value)
} else {
localStorage.setItem(key, value) // æµè§å¨éçº§å° localStorage
}
}
ä¼å¿ï¼
- åæä»¶ç»´æ¤ï¼åªéå ³æ³¨ä¸ä¸ªå®ç°
- æµè§å¨å¼åï¼çæ´æ°å¿«
- ç»ä¸æ¥å£ï¼æäºä½¿ç¨
使ç¨ç¤ºä¾
åºæ¯ 1ï¼å®¡æ¥ç°æé¡¹ç®
ç¨æ·è¾å ¥ï¼”帮æå®¡æ¥ä¸ä¸è¿ä¸ª Tauri 项ç®çä»£ç ”
审æ¥è¦ç¹ï¼
- æ£æ¥æ¯å¦ä¼å 使ç¨äºå®æ¹æä»¶èéèªå®ä¹ Rust 代ç
- æ£æ¥æ¯å¦æå端 API å±å°è£
ï¼å¦
src/api/ç®å½ï¼ - æ£æ¥æ¯å¦æ¯ææµè§å¨å¼å模å¼
- æ£æ¥æä»¶å¯¼å ¥æ¹å¼æ¯å¦åç
- æåºæ¹è¿å»ºè®®
åºæ¯ 2ï¼å®ç°æ°åè½
ç¨æ·è¾å ¥ï¼”æéè¦å®ç°åªè´´æ¿åè½”
æ¨èæ¹æ¡ï¼
- 使ç¨å®æ¹
@tauri-apps/plugin-clipboard-manageræä»¶ - å¨
src/api/clipboard.tsä¸å°è£ API - æ·»å ç¯å¢æ£æµï¼æ¯ææµè§å¨é级
- ä¸å¡ä»£ç ç´æ¥è°ç¨å°è£ åç API
åºæ¯ 3ï¼æ§è½ä¼å建议
ç¨æ·è¾å ¥ï¼”ç¼è¯æ¶é´å¤ªé¿äºï¼æä»ä¹ä¼å建议4
ä¼åæ¹åï¼
- åå°èªå®ä¹ Rust 代ç ï¼ä¼å ä½¿ç¨ JS æä»¶
- æ£æ¥
Cargo.tomlä¸ä¸å¿ è¦çä¾èµ - 使ç¨å¼å模å¼çå¢éç¼è¯
- èè使ç¨å端å°è£ å±å¨æµè§å¨ä¸å¼å
åºæ¯ 4ï¼æ¶æè®¾è®¡å¨è¯¢
ç¨æ·è¾å ¥ï¼”æè¦è®¾è®¡ä¸ä¸ª Tauri åºç¨çæ¶æ”
æ¶æå»ºè®®ï¼
- å端ä¼å ï¼å¤§é¨ååè½ç¨åç«¯ææ¯æ å®ç°
- API å±å°è£
ï¼å¨
src/api/ä¸ç»ä¸å°è£ Tauri API - ç¯å¢æ½è±¡ï¼éè¿
isTauri()æ£æµå®ç°åç¯å¢æ¯æ - æä»¶ä¼å ï¼ä¼å 使ç¨å®æ¹æä»¶ï¼é¿å ç¼å Rust 代ç
常è§é®é¢
é®é¢ï¼ä»ä¹æ¶åéè¦ç¼å Rust 代ç ï¼
夿æ åï¼
- ç°ææä»¶æ æ³æ»¡è¶³éæ± â èèèªå®ä¹ Rust 代ç
- éè¦æä½ç³»ç»çº§å«çç¹æ®åè½ â å¯è½éè¦ Rust
- æ§è½ææçæä½ï¼å¦å¤§éæ°æ®å¤çï¼ â å¯ä»¥èè Rust
ä¼å 级ï¼å®æ¹æä»¶ > ç¤¾åºæä»¶ > èªå®ä¹ Rust 代ç
é®é¢ï¼å¦ä½å¤çæµè§å¨ä¸æ¯æçåè½ï¼
ä¸ç§å¤çæ¹å¼ï¼è¯¦è§ä¸æ”å端å°è£ API å±”ç« èï¼ï¼
- è¿åé»è®¤å¼/Mock æ°æ®ï¼éåå¼åé¶æ®µï¼
- æåºæç¡®é误ï¼éåå¿ é¡»åè½ï¼
- æä¾éçº§æ¹æ¡ï¼å¦ localStorage æ¿ä»£æä»¶ç³»ç»ï¼
é®é¢ï¼æä»¶ä¸æ¬¡å®è£ 失败æä¹åï¼
注æäºé¡¹ï¼
pnpm tauri add䏿¬¡åªè½æ·»å ä¸ä¸ªæä»¶- éè¦å¤æ¬¡æ§è¡å®è£ å½ä»¤
- å®è£
åéè¦å¨
src-tauri/capabilities/default.jsonä¸é ç½®æé
é®é¢ï¼å¦ä½æµè¯ Tauri åºç¨ï¼
æ¨èæµç¨ï¼
- 使ç¨
pnpm devè¿è¡çº¯å端å¼åï¼å¿«éçæ´æ°ï¼ - æ ¸å¿åè½å®æå使ç¨
pnpm tauri devæµè¯æ¡é¢ç«¯éæ - æå»ºå使ç¨
pnpm tauri buildå¨ç®æ 平尿µè¯
注æäºé¡¹
- Tauri çæ¬ï¼æ¤æè½åºäº Tauri 2.xï¼ä¸éç¨äº 1.x
- æä»¶æéï¼å®è£
æä»¶åéè¦å¨
src-tauri/capabilities/default.jsonä¸é ç½®æé - åç¯å¢å¼åï¼æ¨è卿µè§å¨ä¸å¼åï¼æ¡é¢ç«¯æµè¯
- æ§è½èèï¼åå° Rust 代ç 坿¾è缩çç¼è¯æ¶é´
- å®å
¨å»ºè®®ï¼è°¨æ
使ç¨
shellæä»¶æ§è¡å½ä»¤ï¼é¿å å½ä»¤æ³¨å ¥é£é© - 项ç®å ³èï¼å建æ°é¡¹ç®å»ºè®®ä½¿ç¨ tauri-create æè½