SuperAPI AI 工具集

vue-best-practices

前端与建站

查看项目

更新于 10-16 14:52

技能介绍

Vue Best Practices Workflow 是一个用于 Vue.js 任务的指令集型技能,要求按顺序执行其工作流,除非用户明确要求更换顺序。其核心原则包括:保持状态可预测(单一数据源,其余派生);显式数据流(多数情况下 Props 向下、Events 向上);偏好小型聚焦组件以便测试、复用和维护;避免不必要的重渲染,合理使用计算属性与侦听器;注重可读性,编写清晰自解释的代码。

一、编码前确认架构(必须)。默认技术栈为 Vue 3 + Composition API + <script setup lang="ts">。如果项目明确使用 Options API,则加载 vue-options-api-best-practices 技能(若可用);如果明确使用 JSX,则加载 vue-jsx-best-practices 技能(若可用)。在实现任何 Vue 任务前,必须阅读并应用核心参考:references/reactivity.md、references/sfc.md、references/component-data-flow.md、references/composables.md,并在整个任务期间保持这些参考处于活跃工作上下文中。对于非简单功能,需先制定组件边界计划:为每个组件用一句话定义单一职责;默认将入口/根组件与路由级视图组件作为组合表面;除非是极小的单文件演示,否则把功能 UI 与功能逻辑移出入口/根/视图组件;在组件地图中定义每个子组件的 props/emits 契约;当添加多个组件时,优先采用功能文件夹布局(components/<feature>/...、composables/use<Feature>.ts)。

二、应用 Vue 核心基础(必须)。响应式方面:保持源状态最小(ref/reactive),尽可能用 computed 派生;必要时用侦听器处理副作用;避免在模板中重复计算昂贵逻辑。SFC 结构与模板安全方面:SFC 各区块顺序为 <script> → <template> → <style>;保持 SFC 职责聚焦,拆分过大的组件;模板保持声明式,把分支与派生逻辑移到 script;应用 Vue 模板安全规则(v-html、列表渲染、条件渲染选择)。组件聚焦方面:当一个组件有多个明确职责时拆分;用更小的组件加组合式函数替代“巨型组件”;把 UI 区块移入子组件(props 进、events 出),把状态/副作用移入组合式函数。客观拆分触发条件:组件同时承担编排/状态与大量多区块展示标记时;有 3 个以上不同 UI 区块时(如表单、过滤器、列表、页脚/状态);模板块重复或可复用时。入口/根与路由视图规则:保持其轻量,只负责应用外壳/布局、provider 接线与功能组合,不要把完整功能实现放入其中。对于 CRUD/列表功能(待办、表格、目录、收件箱),至少拆分为功能容器组件、输入/表单组件、列表(和/或条目)组件、页脚/操作或过滤/状态组件;仅允许非常小的临时演示采用单文件实现,且需明确说明为何无需拆分。组件数据流方面:以 props 向下、events 向上为主模型;仅在真正双向组件契约时使用 v-model;仅在深层树依赖或共享上下文时使用 provide/inject;用 defineProps、defineEmits 和 InjectionKey 保持契约显式且带类型。组合式函数方面:当逻辑复用、有状态或副作用重时抽取为组合式函数;保持 API 小而带类型且可预测;将功能逻辑与展示组件分离。

三、仅在需求需要时考虑可选特性。标准可选特性包括:插槽(父组件需要控制子内容/布局)、透传属性(包装/基础组件需安全转发 attrs/events)、<KeepAlive>(有状态视图缓存)、<Teleport>(覆盖层/传送门)、<Suspense>(异步子树回退边界);动画相关按所需运动行为选择最简方案:<Transition> 处理进入/离开、<TransitionGroup> 处理动画列表变更、基于类的动画处理非进入/离开效果、状态驱动动画处理用户输入驱动的动画。较少见的可选特性包括:指令(行为针对 DOM 且不适合作组合式函数/组件)、异步组件(重型/罕见 UI 懒加载)、渲染函数(模板无法表达需求时)、插件(需要应用级安装行为时)、状态管理模式(跨功能边界的应用级共享状态)。

四、在行为正确后再做性能优化。性能是功能完成后的阶段,不应在核心行为实现并验证前优化。对应场景:大列表渲染瓶颈用 perf-virtualize-large-lists;静态子树不必要重渲染用 perf-v-once-v-memo-directives;热列表路径过度抽象用 perf-avoid-component-abstraction-in-lists;昂贵更新触发过于频繁用 updated-hook-performance。

五、完成前最终自检:核心行为可用且符合需求;所有必读参考已阅读并应用;响应式模型最小且可预测;遵循 SFC 结构与模板规则;组件聚焦且分解良好,必要时拆分;入口/根与路由视图组件保持组合表面,除非明确的小演示例外;组件拆分决策明确且可辩护;数据流契约显式且带类型;在复用/复杂性需要处使用组合式函数;适用时把状态/副作用移入组合式函数;可选特性仅在需求要求时使用;性能改动仅在功能完成后应用。

资料还提及覆盖 Vue 3、SSR、Volar 等,但正文未展开具体说明;来源为 midudev/autoskills,技能页面为 https://www.skills.sh/midudev/autoskills/vue-best-practices。关于收费、价格、平台支持等细节暂未提供。