Loading...
Loading...
Best Practices Guide for Tauri Framework. Use Cases: Tauri Application Development, Code Review, Architecture Design
npx skill4agent add krissss/skills tauri-best-practices💡 Use the tauri-create skill to create new projects.
| Plugin | Function | Installation Command |
|---|---|---|
| Open URLs, execute commands | |
| File system access | |
| File dialogs | |
| System notifications | |
| Clipboard operations | |
| HTTP requests | |
| Data persistence | |
| Window state persistence | |
📌 Complete Plugin List: https://v2.tauri.app/zh-cn/plugin/
pnpm tauri addpnpm tauri add clipboard-manager
pnpm tauri add window-state// Import all methods
import * as Clipboard from '@tauri-apps/plugin-clipboard-manager'
// Then use
await Clipboard.writeText(text)
// Destructuring import
import { writeText, readText } from '@tauri-apps/plugin-clipboard-manager'src/
├── api/
│ └── clipboard.ts # Encapsulated clipboard API
├── lib/
│ └── platform.ts # Environment detection
└── 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()
}
}
// Usage
import { writeText, readText } from '@/api/clipboard'
await writeText('Hello')// Method 1: Return default/mock data
export async function getAppVersion(): Promise<string> {
if (isTauri()) {
return await app.getVersion()
}
return '0.0.0-browser' // Use mock value during development
}
// Method 2: Throw explicit error
export async function readFile(path: string): Promise<string> {
if (isTauri()) {
return await fs.readTextFile(path)
}
throw new Error('File API is only available on desktop')
}
// Method 3: Provide fallback solution
export async function saveData(key: string, value: string): Promise<void> {
if (isTauri()) {
await fs.writeTextFile(`data/${key}.txt`, value)
} else {
localStorage.setItem(key, value) // Fallback to localStorage in browser
}
}src/api/@tauri-apps/plugin-clipboard-managersrc/api/clipboard.tsCargo.tomlsrc/api/isTauri()pnpm tauri addsrc-tauri/capabilities/default.jsonpnpm devpnpm tauri devpnpm tauri buildsrc-tauri/capabilities/default.jsonshell