SuperAPI AI 工具集

vue

前端与建站

查看项目

更新于 10-16 14:57

技能介绍

Vue 是一个用于构建用户界面的渐进式框架,具备响应式组合式 API 与高性能的 Vapor Mode 编译能力。

一、适用场景 渐进式全栈 Web 应用:Vue 3.5+ 配合 <script setup> 与 Composition API。 单页应用(SPA):使用 Vue Router 与 Pinia 构建快速、响应式的前端。 交互式微前端与组件:将响应式组件嵌入已有的服务端渲染模板。 设计系统实现:结合 PrimeVue 或 Vuetify 构建可访问、作用域隔离的组件库。

二、主要能力与核心概念 组合式 API 与 TypeScript:使用 ref、computed 和 watch 等响应式原语。示例中展示了带 Props 与 emits 的 ProductCounter 组件,通过 withDefaults(defineProps<Props>()) 定义带类型与默认值的 props,通过 defineEmits 声明事件,并用 computed 计算总价、watch 监听变化后 emit 事件。 Pinia 状态管理:以类型推断的方式建立集中式响应式 store。示例中 useCartStore 使用 defineStore 与 setup 风格,定义 items、totalCost、itemCount 计算属性以及 addItem、clearCart 操作。 异步组件与 Suspense:使用 defineAsyncComponent 懒加载组件以优化代码分割,并在模板中用 <Suspense> 提供 #default 与 #fallback 插槽,实现加载骨架屏。 组合式函数(Composable)模式:封装可复用的有状态响应式逻辑。示例中 useMouse 结合 onMounted 与 onUnmounted 注册和清理 mousemove 监听,返回 x、y 响应式坐标。

三、使用方式与最佳实践 推荐做法: 默认使用 <script setup lang="ts"> 作为所有 Vue 3 组件的语法。 使用 Pinia 进行全局状态管理,弃用旧版 Vuex。 对于不需要深层响应式的大数组或大对象,使用 shallowRef 或 shallowReactive。 为组件 CSS 添加作用域(<style scoped>),避免样式泄漏到整个应用。

不推荐做法: 在全新的 TypeScript 代码库中使用选项式 API(data()、methods)。 在子组件中直接修改 props;应通过 emit 事件让父组件更新状态。 在同一个 HTML 元素上同时使用 v-if 和 v-for。

四、故障排查 错误:TypeError: Cannot set property of undefined in ref。原因:在 JavaScript 中更新 ref 时忘记 .value。解决:在 <script> 中始终使用 .value 读写 ref,如 count.value++。 错误:解构 reactive 对象后响应式丢失。原因:解构 reactive({}) 会剥离底层 Proxy。解决:解构前用 toRefs(state) 包装对象。 错误:组件触发了事件但未注册监听器。原因:组件与父组件之间事件名大小写不一致。解决:在模板中使用 kebab-case 命名事件监听,如 @update-item="handle"。

五、参考资料 Vue.js 官方文档 Vue Vapor Mode

(注:本技能的具体收费方式、价格、部署平台等信息资料中暂未提供。)