快速判断
用于构建现代网页用户界面的渐进式JavaScript框架。在编辑或处理*.vue文件或导入了"vue"的代码时始终使用。咨询有关调试、最佳实践或修改vue核心的问题。
适合任务
- 按 ModelScope 收录说明完成平台、开发或工作流任务。
- 通过下载包离线保存 Skill 内容。
- 结合下载量、访问量和喜欢数评估优先级。
输入与输出
输入:任务目标、上下文材料、平台信息、文件路径、约束条件或需要处理的内容。
输出:按 Skill 说明生成的文档、代码、检查结果、计划、建议或操作步骤。
示例任务
- 使用 vue-skilld 帮我完成当前任务,并先确认必要上下文。
- 根据 vue-skilld 的说明,列出操作步骤和风险检查点。
安装方式
- 下载本站提供的 Skill ZIP 并解压。
- 把解压后的 Skill 目录放入当前 AI 工具支持的
skills目录。 - 如需在线查看原始内容,可打开 GitHub 的
SKILL.md。
风险边界
使用前请检查权限、外部依赖和要处理的数据类型。第三方平台数据、支付、部署、账号和密钥相关内容应先核对官方说明。
SKILL.md 文档介绍
vuejs/core vue
> The progressive JavaScript framework for building modern web UI.
Version: 3.6.0-beta.7 (Feb 2026)
Deps: @vue/shared@3.6.0-beta.7, @vue/compiler-dom@3.6.0-beta.7, @vue/runtime-dom@3.6.0-beta.7, @vue/runtime-vapor@3.6.0-beta.7, @vue/server-renderer@3.6.0-beta.7, @vue/compiler-sfc@3.6.0-beta.7
Tags: csp: 1.0.28-csp (Sep 2016), legacy: 2.7.16 (Dec 2023), v2-latest: 2.7.16 (Dec 2023), rc: 3.5.0-rc.1 (Aug 2024), alpha: 3.6.0-alpha.7 (Dec 2025), latest: 3.5.30 (Mar 2026), beta: 3.6.0-beta.7 (Feb 2026)
References: [Docs](./references/docs/_INDEX.md) — API reference, guides
API Changes
This section documents version-specific API changes — prioritize recent major/minor releases.
- NEW:
createVaporApp()(experimental) — new in v3.6, creates a Vapor-mode app instance without pulling in the Virtual DOM runtime; usecreateApp()for standard VDOM apps [source](./references/releases/v3.6.0-alpha.1.md#about-vapor-mode)
- NEW:
vaporInteropPlugin(experimental) — new in v3.6, install into a VDOMcreateApp()instance to allow Vapor components inside VDOM trees; without it, Vapor SFCs cannot be used in VDOM apps [source](./references/releases/v3.6.0-beta.1.md#about-vapor-mode)
- NEW:
<script setup vapor>attribute (experimental) — new in v3.6, opts an SFC into Vapor Mode compilation; only works with<script setup>; does not support Options API,app.config.globalProperties, orgetCurrentInstance()[source](./references/releases/v3.6.0-beta.1.md#opting-in-to-vapor-mode)
- NEW:
useTemplateRef(key)— new in v3.5, preferred replacement for plainrefvariable names matchingref="key"attributes; supports dynamic string IDs at runtime unlike the old static-only pattern [source](./references/releases/blog-3.5.md#usetemplateref)
- NEW:
useId()— new in v3.5, generates stable unique IDs per component instance guaranteed to match between SSR and client hydration; replaces manual ID management for form/accessibility attributes [source](./references/releases/blog-3.5.md#useid)
- NEW:
onWatcherCleanup(fn)— new in v3.5, registers a cleanup callback inside awatchorwatchEffectcallback; replaces theonCleanupparameter pattern and can be called from nested functions [source](./references/releases/blog-3.5.md#onwatchercleanup)
- NEW:
hydrateOnVisible(),hydrateOnIdle(),hydrateOnInteraction(),hydrateOnMediaQuery()— new in v3.5, lazy hydration strategies passed todefineAsyncComponent({ hydrate: hydrateOnVisible() }); without thehydrateoption, async components hydrate immediately [source](./references/releases/blog-3.5.md#lazy-hydration)
- NEW:
defineModel()stable — promoted from experimental in v3.3 to stable in v3.4; automatically declares a prop and returns a mutable ref; replaces the manualdefineProps+defineEmits('update:modelValue')pattern [source](./references/releases/blog-3.4.md#definemodel-is-now-stable)
- NEW:
definePropsdestructure with defaults — stabilized in v3.5 (was experimental in v3.3);const { count = 0 } = defineProps<{ count?: number }>()replaceswithDefaults(defineProps<...>(), { count: 0 }); destructured vars must be wrapped in getters to pass towatch()or composables [source](./references/releases/blog-3.5.md#reactive-props-destructure)
- BREAKING:
@vnodeXXXevent listeners — removed in v3.4, are now a compiler error; use@vue:XXXlisteners instead (e.g.@vue:mounted) [source](./references/releases/blog-3.4.md#other-removed-features)
- BREAKING: Reactivity Transform (
$ref,$computed, etc.) — removed in v3.4 after being deprecated in v3.3; was experimental and distinct from the now-stable props destructure feature; use Vue Macros plugin to continue using it [source](./references/releases/blog-3.4.md#other-removed-features)
- BREAKING: Global
JSXnamespace — no longer registered by default since v3.4; setjsxImportSource: "vue"intsconfig.jsonor importvue/jsxto restore it; affects TSX users only [source](./references/releases/blog-3.4.md#global-jsx-namespace)
- BREAKING:
app.config.unwrapInjectedRef— removed in v3.4; ref unwrapping ininject()is now always enabled and cannot be disabled [source](./references/releases/blog-3.4.md#other-removed-features)
- NEW:
<Teleport defer>prop — new in v3.5, mounts the teleport after the current render cycle so the target element can be rendered by Vue in the same component tree; requires explicitdeferattribute for backwards compatibility [source](./references/releases/blog-3.5.md#deferred-teleport)
Also changed: defineSlots<{}>() macro NEW v3.3 for typed slot declarations · defineOptions({}) macro NEW v3.3 to set component options without a separate <script> block · toRef(() => getter) enhanced in v3.3 to accept plain values and getters · toValue() NEW v3.3 normalizes values/getters/refs to values (inverse of toRef) · v-bind same-name shorthand NEW v3.4 (:id shorthand for :id="id") · data-allow-mismatch attribute NEW v3.5 to suppress hydration mismatch warnings · useHost() / useShadowRoot() NEW v3.5 for custom element host access · v-is directive REMOVED v3.4 (use is="vue:ComponentName" instead) · reactivity system alien-signals refactor in v3.6 improves memory usage with no API changes
Best Practices
- Use reactive props destructure (3.5+) with native default value syntax instead of
withDefaults()— destructured variables are reactive and the compiler rewrites accesses toprops.xautomatically. When passing to composables orwatch, wrap in a getter:watch(() => count, ...)[source](./references/docs/api/sfc-script-setup.md#reactive-props-destructure)
- Use
toValue()in composables to normalizeMaybeRefOrGetter<T>arguments — handles plain values, refs, and getter functions uniformly so callers can pass any form without the composable caring [source](./references/docs/api/reactivity-utilities.md#tovalue)
- Use
onWatcherCleanup()(3.5+) instead of theonCleanupcallback parameter inwatchandwatchEffect— it can be called from any helper function in the sync execution stack, not just the top-level callback, making cleanup logic easier to extract [source](./references/docs/api/reactivity-core.md#onwatchercleanup)
- Use
useTemplateRef()(3.5+) instead of a plainrefwith a matching variable name for template refs — supports dynamic ref IDs and provides better IDE auto-completion and type checking via@vue/language-tools2.1 [source](./references/docs/api/composition-api-helpers.md#usetemplateref)
- Use
useId()(3.5+) for form element and accessibility IDs in SSR apps — generated IDs are stable across server and client renders, preventing hydration mismatches. Avoid calling insidecomputed()as it can cause instance conflicts [source](./references/docs/api/composition-api-helpers.md#useid)
- Use
shallowRef()/shallowReactive()for large immutable data structures — deep reactivity tracks every property access via proxy traps; shallow variants avoid this overhead while still reacting to root.valuereplacement [source](./references/docs/guide/best-practices/performance.md#reduce-reactivity-overhead-for-large-immutable-structures)
- Pass computed values directly as
activeprops rather than IDs for comparison — child components re-render when any received prop changes, so passing a stable boolean avoids re-rendering every list item when only one item's active state changes [source](./references/docs/guide/best-practices/performance.md#props-stability)
- When a computed returns a new object on every evaluation, accept
oldValueand return it unchanged when data is equivalent — avoids unnecessary downstream effect triggers since Vue 3.4+ only triggers effects when the computed value reference changes [source](./references/docs/guide/best-practices/performance.md#computed-stability)
- Use
defineAsyncComponentwith a lazy hydration strategy (3.5+) for SSR —hydrateOnVisible(),hydrateOnIdle(),hydrateOnInteraction(), andhydrateOnMediaQuery()are tree-shakable and defer hydration until the component is actually needed
import { defineAsyncComponent, hydrateOnVisible } from 'vue'
const AsyncComp = defineAsyncComponent({
loader: () => import('./Comp.vue'),
hydrate: hydrateOnVisible()
})[source](./references/docs/guide/components/async.md#lazy-hydration)
- (experimental) Opt in to Vapor Mode per-component with
<script setup vapor>when targeting performance-sensitive UI — Vapor avoids Virtual DOM diffing entirely and achieves Solid/Svelte 5 benchmark parity, but does not support Options API,app.config.globalProperties, orgetCurrentInstance(). UsevaporInteropPluginto mix Vapor and VDOM components in an existing app [source](./references/releases/v3.6.0-beta.1.md#about-vapor-mode)