用途:该技能在规划或实现 Vue 3 项目时提供指导,帮助架构组件结构、规划功能实现,并推行 TypeScript 优先的写法。核心原则是使用 TypeScript 泛型而非运行时校验、使用现代 API(如 defineModel 而非手写 props)、测试用户行为而非实现细节。
主要能力:组件方面,defineProps<{ }>()(除非脚本中用到否则不加 const)、defineEmits<{ event: [args] }>()、用 defineModel<type>() 实现 v-model;测试方面,使用 @testing-library/vue 与 MSW,异步用 findBy* 或 waitFor(),禁止 setTimeout() 或测试内部状态;路由方面,用显式参数名如 [userId] 而非 [id],避免 index.vue 而用 (name).vue,用 . 表示嵌套,如 users.edit.vue 对应 /users/edit;组合式函数方面,组件专属逻辑先内联写,复用后再抽到外部文件,外部组合式函数以 use 为前缀且不包含 UI 逻辑,改为暴露错误状态。
使用方式:实现复杂组件时可用 TodoWrite 跟踪进度,清单包括定义 props/emits/models 的 TypeScript 接口、实现 defineProps 与 defineEmits、按需用 defineModel 添加 v-model、用 Testing Library 编写用户行为测试、用 findBy* 或 waitFor() 测试异步行为,并确认无上述反模式。资料还列出常见借口与其反驳,如“为了速度”实际正确模式耗时相同、“TypeScript 太啰嗦”实际 defineProps<{ count: number }>() 代码更少。
适用场景:Vue 3、Composition API、TypeScript 项目。
限制:不适用于 Vue 2 项目、Options API 代码库,以及没有 TypeScript 的项目。资料仅提及 TypeScript 优先,未提供安装命令、价格或平台信息。