50 lines
1.5 KiB
Markdown
50 lines
1.5 KiB
Markdown
# Tauri IPC 模式
|
||
|
||
> 创建: 2026-06-10 | 状态: 初稿
|
||
|
||
> ⚠️ **已归档(2026-06-15)**:本文档为初稿,多处过时(:8「仅 greet 示例」→ 实际 68 commands;:16-23 待实施 5 项全落地;:35 `frontend/src/` → 实际 `src/`)。实际 IPC 模式见 [ARCHITECTURE.md](../../ARCHITECTURE.md) §三,本文件不再更新,原文保留作历史。
|
||
|
||
---
|
||
|
||
## 概述
|
||
|
||
Tauri v2 的 IPC 机制是 DevFlow 前后端通信的核心桥梁。本文档描述 DevFlow 中 Tauri IPC 的设计模式。
|
||
|
||
## 当前状态
|
||
|
||
- Tauri Commands: 仅 `greet` 示例命令
|
||
- 业务 IPC: **待实施**
|
||
|
||
## 设计要点
|
||
|
||
### 待实施内容
|
||
|
||
1. **Command 定义** — 在 `src-tauri/src/commands/` 下按模块组织
|
||
2. **序列化约定** — Rust 结构体 derive `Serialize`/`Deserialize`
|
||
3. **错误传递** — `Result<T, String>` 返回给前端
|
||
4. **流式支持** — AI 输出、Shell 输出的流式推送
|
||
5. **状态注入** — 通过 `tauri::State` 共享 Rust 运行时状态
|
||
|
||
### IPC 层次
|
||
|
||
```
|
||
Vue Component
|
||
→ Pinia Store (Action)
|
||
→ @tauri-apps/api (invoke)
|
||
→ Tauri Command (Rust)
|
||
→ Crate 业务逻辑
|
||
→ df-storage (SQLite)
|
||
```
|
||
|
||
### 命名约定
|
||
|
||
- Rust command: `#[tauri::command] fn get_projects(...)`
|
||
- 前端调用: `invoke("get_projects", { ... })`
|
||
- Store action: `async fetchProjects()`
|
||
|
||
## 相关文件
|
||
|
||
- `src-tauri/src/main.rs` — Tauri 入口
|
||
- `src-tauri/src/commands/` — IPC 命令目录
|
||
- `frontend/src/stores/` — Pinia Store
|