SuperAPI AI 工具集

lov-optimize-tauri-backend

编程与开发

查看项目

更新于 10-16 00:01

技能介绍

用途:把不断膨胀的 Tauri 后端整理成更小、更稳定、更易开发的形态。目标不是实现 Rust 热更新,而是减少 Rust 改动频率、降低重启干扰,并让 Tauri 命令边界保持小而可审计。

适用场景:使用 pnpm tauri dev / npm run tauri dev 时 Rust 改动频繁重启应用;lib.rs 成为巨型文件;暴露 100+ 或 200+ 个 #[tauri::command];前端到处散落 invoke("command_name") 字符串;长时 invoke / Channel 调用在重载或 HMR 后出现过期回调警告;需要后端模块化、命令收敛、改进开发脚本或重启状态恢复。

主要能力与做法:先读取本地规则(AGENTS.md、CLAUDE.md、package.json、src-tauri 配置),尊重仓库约束;对后端做基线统计(lib.rs 行数、最大 Rust 文件、命令数量、命令注册位置、是否有集中 invoke 适配层、长 IPC 流);按开发循环、巨型模块、命令泛滥、invoke 泛滥、长 IPC、重启痛点、编译痛点分类问题。

开发循环:新增 dev:web、dev:app、dev:app:no-watch 脚本,保留原有 pnpm tauri dev;no-watch 下 Vite HMR 保持,Rust 改动不重启应用。

模块化:让 lib.rs 成为薄入口,拆出 app/ 等真实模块,把 generate_handler! 移到 command_registry.rs,run.rs 只负责生命周期、插件、菜单、窗口与监听;单文件约 1000 行以内。

命令收敛:不要用 do_anything(action, payload) 取代 200 个命令,而是按域做类型化路由(如 settings_command、template_command、file_command、pty_command、workspace_command、maas_command),高风险或权限不同的操作保留显式命令,中型应用目标 100 个命令以内。

前端:建立 src/lib/tauri.ts 适配层,用 COMMAND_ROUTES 映射旧命令到路由命令,替换组件中直接来自 @tauri-apps/api/core 的 invoke。

长 IPC:为流分配 streamId,支持取消,HMR dispose、pagehide、路由卸载时取消;Rust 侧用取消表管理,向已关闭通道发送时停止循环,不要用 console.warn 全局掩盖警告。

重启恢复:开发环境持久化当前 hash 与活动会话 id,在 pagehide、visibilitychange、HMR dispose 时刷新防抖保存,重载后恢复上次 hash,昂贵列表用缓存并后台重新流式加载。

验证:按本地允许的检查运行 cargo fmt、CARGO_TARGET_DIR=target/codex-check cargo check、pnpm exec tsc --noEmit --pretty false;当 tauri dev 占用 Cargo 锁时使用独立 CARGO_TARGET_DIR。

限制:Tauri 的 Rust 侧“热重载”本质是 watch、重建、重启,不应承诺 Rust 后端 HMR;具体收费、平台与效果资料未提供。