用途
vue-ops 是一份面向 Vue 3 项目的综合性开发参考,目标是在使用 Composition API、Pinia、Vue Router 和 Nuxt 4 构建应用时,提供可直接照做的判断路径与代码模式。资料声明其 Vue 3 / Nuxt 4 生态事实校验日期为 2026-07-05。
主要能力
响应式选型决策树
资料给出了一棵以问题引导的决策树:单个原始值使用 ref();需要深度响应式的普通对象或数组视是否解构选择 reactive() 或 ref(),解构时配合 toRefs();派生状态用 computed();只需顶层变化的大对象用 shallowRef() 或 shallowReactive();副作用根据是否关心旧值选择 watchEffect() 或 watch();不应具备响应式的数据使用 markRaw() 或 shallowRef()。
组件通信决策树
按数据传递距离划分:父传子用 props(defineProps);子传父用 emit(defineEmits);双向绑定用 defineModel()(Vue 3.4+);跨层级用 provide / inject 并建议使用 InjectionKey<T> 保证类型安全;兄弟或无关组件根据复杂度选择公共祖先的 provide / inject 或 Pinia store;全局状态使用 Pinia。资料特别指出 Vue 3 已移除根实例上的 $emit。
Composition API 速查
涵盖 script setup 的标准写法,包括带 TypeScript 泛型的 defineProps、withDefaults 默认值、类型化 defineEmits 具名元组语法(Vue 3.3+)、ref 与 reactive 状态、computed、watch、onMounted 生命周期,以及 defineModel、defineExpose、defineOptions(Vue 3.3+)、defineSlots(Vue 3.3+)的用法示例。
Pinia 速查
提供 setup 语法(推荐,组合式风格)与 options 语法两种 defineStore 写法,展示 state、getters、actions 的定义方式,以及组件中通过 storeToRefs 保持解构响应性、直接解构 actions 的做法。还给出 Pinia 插件示例,使用 pinia-plugin-persistedstate 实现持久化。
Vue Router 速查
包含基础配置(懒加载路由、props: true、meta 元信息、children 嵌套路由、通配 not-found、scrollBehavior)、全局与路由级及组件内导航守卫,以及通过 declare module 'vue-router' 扩展 RouteMeta 的类型化方法。
Nuxt 4
资料指出 Nuxt 4 相对 Nuxt 3 的标志性变化是 app/ 源码目录(将应用代码与 server/ 及根配置分离,详见 ./references/nuxt.md),渲染策略本身未变。决策树按公开内容(SSG / ISR)、按用户动态内容(SSR)、无需 SEO 的后台(SPA ssr: false)、混合需求(routeRules 按路径)以及部署目标(cloudflare、vercel、netlify、node-server 预设)进行分类。
渲染性能技巧
列出了 v-memo、KeepAlive(配合 onActivated/onDeactivated)、虚拟滚动(vue-virtual-scroller 或 @tanstack/vue-virtual)、shallowRef / markRaw 的适用时机,并附 v-memo 按行控制的代码示例。资料建议在编写组合式函数前先查看 VueUse,其中包含 200+ 经过验证的组合式函数。
常见陷阱
以对照表列出问题、原因与修复方式,包括 reactive() 解构后失去响应性、ref.value 在 script 与 template 中的差异、watch 默认浅监听、Nuxt 中异步 setup 破坏 SSR(应使用 useAsyncData 或 useFetch)、watchEffect 的即时执行与懒追踪、模板 ref 挂载前为 null、Pinia 解构状态丢失响应性、props 只读、computed 无 setter 不可写、组件 v-model 默认 prop/event 名称、provide 原始值不具响应性、defineAsyncComponent 错误未捕获等。
使用方式
该技能以文档与代码示例的形式提供。资料还包含一个陈旧性校验脚本 scripts/check-vue-facts.py,支持两种模式:--offline 用于 PR CI 的结构一致性检查(不联网,每个编目包与 Vue 版本门槛仍在正文中被提及、时效性说明仍带有年份),退出码 0 表示一致、10 表示漂移;--live 用于每周新鲜度任务(不阻塞 PR),检查文档中的主版本是否落后于 npm 的 latest dist-tag,退出码 10 表示有主版本前进、7 表示 npm 不可达。规范化事实清单位于 assets/vue-facts.json。
参考文件索引按需加载:./references/composition-api.md(组合式函数、provide/inject、模板 ref、自定义指令、Teleport、Suspense、插槽、过渡、v-model 深层模式)、./references/state-routing.md(Pinia 高级模式、Vue Router)、./references/nuxt.md(Nuxt 4 目录结构、数据获取、服务端路由、中间件、插件、模块、SEO、部署、Nuxt Content)、./references/testing.md(Vitest、Vue Test Utils、Pinia/Router 测试、组合式函数测试、MSW、Playwright、Nuxt 测试工具)。
适用场景
适合正在使用或迁移到 Vue 3 与 Nuxt 4 的前端开发,尤其是需要快速确定响应式 API、组件通信方案、渲染策略,或需要排查上述常见陷阱的场景。
限制
资料说明该技能聚焦 Vue 3 与 Nuxt 4;处于 Vue 2 或需要在服务端渲染的 Twig 页面中挂载 Vue 孤岛的情况,应参考 frontend-upgrade-ops(迁移构建、Vuex 转 Pinia、孤岛、Alpine 或 Vue 选择)。其余如收费、价格、平台等信息暂未提供。
另见
typescript-ops(TypeScript 泛型、工具类型、严格模式配置)、testing-ops(通用测试模式、TDD、Mock 策略、CI 集成)、tailwind-ops(Tailwind CSS 与 Vue 组件模式、暗色模式、响应式设计)、javascript-ops(与现代 JS 模式,如 async/await、模块、迭代器)。