Tauri 的 IPC(进程间通信)机制是前端与 Rust 后端通信的核心,主要通过以下方式实现:
前端调用 Rust 后端
使用 @tauri-apps/api/tauri 的 invoke 方法:
typescriptimport { invoke } from '@tauri-apps/api/tauri'; // 调用 Rust 命令 const result = await invoke('greet', { name: 'World' });
Rust 端定义命令
在 src-tauri/src/main.rs 中使用 #[tauri::command] 宏:
rust#[tauri::command] fn greet(name: &str) -> String { format!("Hello, {}!", name) } fn main() { tauri::Builder::default() .invoke_handler(tauri::generate_handler![greet]) .run(tauri::generate_context!()) .expect("error while running tauri application"); }
Rust 后端主动推送消息到前端
使用 emit 方法:
rust// Rust 端 window.emit("event-name", payload)?; // 前端监听 import { listen } from '@tauri-apps/api/event'; const unlisten = await listen('event-name', (event) => { console.log(event.payload); });
数据序列化
- 自动使用 JSON 进行序列化和反序列化
- 支持复杂的数据类型(对象、数组等)
- Rust 端需要实现
Serialize和Deserializetrait
错误处理
- Rust 端返回
Result类型会自动转换为 Promise - 前端可以使用 try-catch 捕获错误