Vize

全部规则

通过此索引查找规则的用途、默认配置及所属分组。分组页面包含说明、配置、完整的错误和正确示例,以及当前支持范围。此页面现有的规则和示例链接仍然可用。

66 个项目条目链接到跨文件规则页面中的完整共享文件以及错误和正确示例。60 个分析器代码保留其实际支持边界:19 个 CLI 代码(18 对已验证的源代码示例,以及一个保留响应式图的说明性项目)、16 个该 CLI 阶段不会单独输出的实验性 Rust 分析器代码,以及 25 个当前没有生成器的契约。配置 ID 不会启用尚不可用的生成器。

公共 CLI 可通过 vize lint --cross-file 执行同一检查。显示的 vize:croquis/cf/* 代码在 vue.linter.rules 中写为 croquis/cf/*(省略 vize:)。信息和提示诊断会转换为 CLI 警告。相关位置说明来源与消费者之间的关系。

规则 示例 用途
a11y/alt-text 错误示例 · 正确示例 要求媒体元素提供替代文本
a11y/anchor-has-content 错误示例 · 正确示例 要求锚点元素具有可访问的内容
a11y/anchor-is-valid 错误示例 · 正确示例 要求锚点元素具有有效的 href
a11y/aria-props 错误示例 · 正确示例 禁止无效的 ARIA 属性
a11y/aria-role 错误示例 · 正确示例 具有 ARIA 角色的元素必须使用有效的非抽象 ARIA 角色
a11y/aria-unsupported-elements 错误示例 · 正确示例 禁止在不支持 ARIA 的元素上使用 ARIA 属性
a11y/click-events-have-key-events 错误示例 · 正确示例 要求点击事件配有键盘事件处理器
a11y/form-control-has-label 错误示例 · 正确示例 要求表单控件具有相关联的标签
a11y/heading-has-content 错误示例 · 正确示例 要求标题元素具有可访问的内容
a11y/heading-levels 错误示例 · 正确示例 禁止跳过标题层级
a11y/iframe-has-title 错误示例 · 正确示例 要求 iframe 元素具有 title 属性
a11y/img-alt 错误示例 · 正确示例 要求图片提供 alt 属性,以支持无障碍访问
a11y/interactive-supports-focus 错误示例 · 正确示例 要求具有交互角色的元素可获得焦点
a11y/label-has-for 错误示例 · 正确示例 要求标签具有相关联的表单控件
a11y/landmark-roles 错误示例 · 正确示例 验证地标角色的位置及唯一性
a11y/media-has-caption 错误示例 · 正确示例 要求媒体元素具有字幕
a11y/mouse-events-have-key-events 错误示例 · 正确示例 要求鼠标事件配有 focus/blur 事件
a11y/no-access-key 错误示例 · 正确示例 禁止使用 accesskey 属性
a11y/no-aria-hidden-on-focusable 错误示例 · 正确示例 禁止在可获得焦点的元素上使用 aria-hidden="true"
a11y/no-autofocus 错误示例 · 正确示例 禁止使用 autofocus 属性
a11y/no-distracting-elements 错误示例 · 正确示例 禁止 <marquee> 和 <blink> 等分散注意力的元素
a11y/no-i-for-icon 错误示例 · 正确示例 禁止使用 <i> 元素表示图标
a11y/no-redundant-roles 错误示例 · 正确示例 禁止多余的 ARIA 角色
a11y/no-refer-to-non-existent-id 错误示例 · 正确示例 禁止引用不存在的 ID
a11y/no-role-presentation-on-focusable 错误示例 · 正确示例 禁止在可获得焦点的元素上使用 role="presentation" 或 role="none"
a11y/no-static-element-interactions 错误示例 · 正确示例 禁止在静态元素上设置事件处理器
a11y/placeholder-label-option 错误示例 · 正确示例 要求 required 的 select 带有占位选项
a11y/role-has-required-aria-props 错误示例 · 正确示例 要求 ARIA 角色具有必需属性
a11y/tabindex-no-positive 错误示例 · 正确示例 禁止正数 tabindex 值
a11y/use-list 错误示例 · 正确示例 建议为类似项目符号的文本使用列表元素
css/no-display-none 错误示例 · 正确示例 建议使用 v-show 代替 display: none
css/no-hardcoded-values 错误示例 · 正确示例 建议使用 CSS 变量代替硬编码值
css/no-id-selectors 错误示例 · 正确示例 不建议在 CSS 中使用 ID 选择器
css/no-important 错误示例 · 正确示例 不建议在 CSS 中使用 !important
css/no-utility-classes 错误示例 · 正确示例 警告在组件样式中实现工具类
css/no-v-bind-performance 错误示例 · 正确示例 警告 CSS v-bind() 的性能开销
css/prefer-logical-properties 错误示例 · 正确示例 建议使用 CSS 逻辑属性,以更好地支持国际化
css/prefer-nested-selectors 错误示例 · 正确示例 建议为后代选择器使用 CSS 嵌套
css/prefer-slotted 错误示例 · 正确示例 建议使用 ::v-slotted() 为插槽内容设置样式
css/require-font-display 错误示例 · 正确示例 要求 @font-face 规则具有 font-display
ecosystem/nuxt-prefer-nuxt-link 错误示例 · 正确示例 应用内部链接优先使用 NuxtLink
ecosystem/pinia-prefer-store-to-refs 错误示例 · 正确示例 解构 Pinia store 时优先使用 storeToRefs()
ecosystem/router-link-require-to 错误示例 · 正确示例 要求 RouterLink 和 NuxtLink 组件具有 to 目标
ecosystem/void-link-require-href 错误示例 · 正确示例 要求 Void Vue Link 组件具有 href
ecosystem/void-link-valid-method 错误示例 · 正确示例 验证 Void Vue Link 的静态 method prop
ecosystem/vue-i18n-no-missing-key 错误示例 · 正确示例 报告本地 SFC 消息中不存在的静态 vue-i18n 键
ecosystem/vue-router-extra-param 错误示例 · 正确示例 路由未声明 tab;Vue Router 会丢弃它。
ecosystem/vue-router-missing-param 错误示例 · 正确示例 缺少必需的 postId;依赖当前路由并不稳健。
ecosystem/vue-router-param-type 错误示例 · 正确示例 postId 不是可重复参数,因此数组无效。
ecosystem/vue-router-prefer-named-link 错误示例 · 正确示例 RouterLink 优先使用具名路由对象,而不是静态路径字符串
ecosystem/vue-router-prefer-named-push 错误示例 · 正确示例 Vue Router 编程式导航优先使用具名路由对象
ecosystem/vue-router-unknown-route 错误示例 · 正确示例 名称不在完整且已安装的路由器中。
ecosystem/vue-test-utils-no-html-snapshot 错误示例 · 正确示例 避免在 Vue Test Utils 测试中对 wrapper.html() 生成快照
html/cross-component-nesting 错误示例 · 正确示例 检查导入组件组合后的实际 HTML 嵌套。
html/deprecated-attr 错误示例 · 正确示例 禁止已弃用的 HTML 属性
html/deprecated-element 错误示例 · 正确示例 禁止已弃用的 HTML 元素
html/id-duplication 错误示例 · 正确示例 禁止重复的元素 ID
html/no-consecutive-br 错误示例 · 正确示例 禁止连续的 <br> 元素
html/no-dupe-style-properties 错误示例 · 正确示例 禁止内联 style 属性中重复的属性声明
html/no-duplicate-class 错误示例 · 正确示例 禁止静态 class 属性中重复的类名
html/no-duplicate-dt 错误示例 · 正确示例 禁止 <dl> 中重复的 <dt> 名称
html/no-empty-palpable-content 错误示例 · 正确示例 禁止预期具有可见内容的空元素
html/require-datetime 错误示例 · 正确示例 要求 <time> 元素具有 datetime 属性
musea/no-empty-variant 错误示例 · 正确示例 禁止空的 <variant> 块
musea/prefer-design-tokens 错误示例 · 正确示例 优先使用设计令牌 CSS 变量,而不是硬编码的原始值
musea/require-component 错误示例 · 正确示例 要求 <art> 块具有 component 属性
musea/require-title 错误示例 · 正确示例 要求 <art> 块具有 title 属性
musea/unique-variant-names 错误示例 · 正确示例 要求 variant 名称唯一
musea/valid-variant 错误示例 · 正确示例 要求 <variant> 块具有 name 属性
nuxt/no-nuxt-config-test-key 错误示例 · 正确示例 禁止在 Nuxt 配置中设置 test 键
nuxt/no-page-meta-runtime-values 错误示例 · 正确示例 禁止在 definePageMeta 的立即求值层使用运行时上下文值;该层在构建时被提取到独立代码块,并在组件 setup 之前运行
nuxt/nuxt-config-keys-order 错误示例 · 正确示例 优先使用推荐的 Nuxt 配置属性顺序
nuxt/prefer-import-meta 错误示例 · 正确示例 优先使用 import.meta.*,而不是 process.*
petite-vue/no-unsupported-directive 错误示例 · 正确示例 禁止 petite-vue 不支持的指令
petite-vue/valid-v-effect 错误示例 · 正确示例 要求 v-effect 具有非空表达式
petite-vue/valid-v-scope 错误示例 · 正确示例 要求 v-scope 绑定对象字面量
script/component-options-name-casing 错误示例 · 正确示例 要求组件 name 选项使用 PascalCase
script/custom-event-name-casing 错误示例 · 正确示例 要求发出的自定义事件名称使用 camelCase
script/define-emits-declaration 错误示例 · 正确示例 要求使用类型形式 defineEmits<{}>(),而不是运行时或数组形式
script/define-macros-order 错误示例 · 正确示例 要求 <script setup> 中的 Vue 编译器宏保持一致的顺序
script/define-props-declaration 错误示例 · 正确示例 要求使用类型形式 defineProps<{ ... }>(),而不是运行时或对象形式
script/define-props-destructuring 错误示例 · 正确示例 要求 <script setup> 中的 defineProps 解构风格保持一致
script/no-arrow-functions-in-watch 错误示例 · 正确示例 禁止将箭头函数用作 Options API watch 处理器
script/no-async-in-computed 错误示例 · 正确示例 禁止计算属性中的异步函数
script/no-boolean-default 错误示例 · 正确示例 禁止为 Boolean prop 设置默认值
script/no-deep-destructure-in-props 错误示例 · 正确示例 禁止在 defineProps 中进行深层嵌套解构
script/no-deprecated-data-object-declaration 错误示例 · 正确示例 禁止将对象字面量作为组件 data 选项(Vue 3 要求函数)
script/no-deprecated-destroyed-lifecycle 错误示例 · 正确示例 禁止已弃用的 destroyed 和 beforeDestroy 生命周期钩子
script/no-deprecated-dollar-listeners-api 错误示例 · 正确示例 禁止 Vue 3 已移除的 $listeners 实例属性(已合并到 $attrs)
script/no-deprecated-dollar-scopedslots-api 错误示例 · 正确示例 禁止 Vue 3 已移除的 $scopedSlots 实例属性(使用 $slots)
script/no-deprecated-events-api 错误示例 · 正确示例 禁止已移除的 Vue 2 事件 API($on / $off / $once)
script/no-deprecated-props-default-this 错误示例 · 正确示例 禁止在 prop 默认值或校验函数中使用 this(Vue 3 已移除)
script/no-dupe-keys 错误示例 · 正确示例 禁止 Options API 的 props/data/computed/methods/setup/inject 之间重复的键
script/no-duplicate-attr-inheritance 错误示例 · 正确示例 标记重复应用透传属性的组件
script/no-export-in-script-setup 错误示例 · 正确示例 禁止 <script setup> 内的 export 语句
script/no-expose-after-await 错误示例 · 正确示例 禁止在 await 之后调用 expose() 和 defineExpose()
script/no-get-current-instance 错误示例 · 正确示例 禁止在 Vapor 模式使用 getCurrentInstance()(返回 null)
script/no-import-compiler-macros 错误示例 · 正确示例 禁止导入自动可用的 Vue 编译器宏
script/no-internal-imports 错误示例 · 正确示例 禁止从 Vue 内部模块导入
script/no-lifecycle-after-await 错误示例 · 正确示例 禁止在 setup() 中 await 之后注册生命周期钩子
script/no-multiple-slot-args 错误示例 · 正确示例 禁止向作用域插槽函数调用传入多个参数
script/no-next-tick 错误示例 · 正确示例 禁止面向 Vapor 的组件使用 nextTick()
script/no-options-api 错误示例 · 正确示例 禁止 Vapor 模式中的 Options API 模式
script/no-potential-component-option-typo 错误示例 · 正确示例 标记 Options API 组件选项名称中的疑似拼写错误
script/no-reactive-destructure 错误示例 · 正确示例 禁止导致响应性丢失的响应式对象解构
script/no-ref-as-operand 错误示例 · 正确示例 要求将 ref 绑定变量用作操作数时通过 .value 访问
script/no-required-prop-with-default 错误示例 · 正确示例 禁止 prop 同时具有 required: true 和默认值
script/no-reserved-identifiers 错误示例 · 正确示例 禁止使用 Vue 编译器保留标识符
script/no-reserved-keys 错误示例 · 正确示例 禁止将 Vue 保留名称用作 Options API props/data/computed/methods/setup/inject 键
script/no-reserved-props 错误示例 · 正确示例 禁止在组件 props 声明中使用保留名称
script/no-restricted-globals 错误示例 · 正确示例 禁止直接引用必须通过类型化包装器访问的运行时环境全局变量
script/no-restricted-members 错误示例 · 正确示例 禁止项目配置的 object.property 成员访问
script/no-side-effects-in-computed-properties 错误示例 · 正确示例 禁止 Options API 计算 getter 中的副作用
script/no-top-level-ref-in-script 错误示例 · 正确示例 禁止顶层 ref/reactive,以防止跨请求状态污染
script/no-unstable-nested-components 错误示例 · 正确示例 禁止在 setup 或 render 函数内定义组件
script/no-unused-emit-declarations 错误示例 · 正确示例 标记已声明却从未发出的事件
script/no-use-computed-property-like-method 错误示例 · 正确示例 禁止像方法一样调用 Options API 计算属性
script/no-watch-after-await 错误示例 · 正确示例 禁止在 setup() 中 await 之后注册未保留停止句柄的侦听器
script/no-with-defaults 错误示例 · 正确示例 不建议使用 withDefaults,优先使用解构默认值(Vue 3.5+)
script/prefer-computed 错误示例 · 正确示例 响应式派生状态优先使用 computed()
script/prefer-define-options 错误示例 · 正确示例 优先使用 defineOptions(),而不是仅设置 name/inheritAttrs 的普通 <script>
script/prefer-import-from-vue 错误示例 · 正确示例 优先从 'vue' 导入,而不是内部包
script/prefer-ref-over-reactive 错误示例 · 正确示例 建议使用 ref() 而不是 reactive() 管理状态
script/prefer-use-attrs 错误示例 · 正确示例 建议使用 useAttrs() 而不是 context.attrs
script/prefer-use-id 错误示例 · 正确示例 建议使用 useId() 生成唯一 ID(Vue 3.5+)
script/prefer-use-slots 错误示例 · 正确示例 建议使用 useSlots() 而不是 context.slots
script/prefer-use-template-ref 错误示例 · 正确示例 模板引用建议使用 useTemplateRef 而不是 ref(Vue 3.5+)
script/require-default-prop 错误示例 · 正确示例 要求每个可选的非 Boolean prop 具有默认值
script/require-explicit-emits 错误示例 · 正确示例 要求发出的事件在 defineEmits 或 emits 选项中声明
script/require-explicit-slots 错误示例 · 正确示例 要求通过 useSlots() 使用的插槽由 defineSlots<...>() 显式定义类型
script/require-function-return-type 错误示例 · 正确示例 要求函数具有返回类型注解
script/require-prop-type-constructor 错误示例 · 正确示例 要求 prop 的 type 值是构造器,而不是字符串字面量
script/require-prop-types 错误示例 · 正确示例 要求每个 prop 声明类型
script/require-symbol-provide 错误示例 · 正确示例 建议使用 Symbol 作为 provide/inject 的注入键
script/require-typed-object-prop 错误示例 · 正确示例 要求运行时类型为 Object 或 Array 的 prop 具有显式类型
script/require-typed-ref 错误示例 · 正确示例 要求无初始值、null 或 undefined 初始化的 ref() 具有显式类型参数
script/require-valid-default-prop 错误示例 · 正确示例 要求 prop 默认值符合声明类型
script/return-in-computed-property 错误示例 · 正确示例 要求每个计算 getter 返回值
script/return-in-emits-validator 错误示例 · 正确示例 要求每个 Options API emits 校验函数返回值
script/valid-define-emits 错误示例 · 正确示例 要求 defineEmits() 用法有效(不同时提供类型和运行时参数、不引用局部变量、只调用一次)
script/valid-define-options 错误示例 · 正确示例 要求 defineOptions() 用法有效(单个对象参数、不包含 props/emits/expose/slots)
script/valid-define-props 错误示例 · 正确示例 要求 defineProps() 用法有效(只调用一次、不同时提供类型和运行时参数、不引用局部变量)
script/valid-next-tick 错误示例 · 正确示例 要求 nextTick() 调用结果被等待、链式处理,或提供回调
ssr/no-browser-globals-in-ssr 错误示例 · 正确示例 禁止 SSR 上下文中的浏览器专用全局变量
ssr/no-hydration-mismatch 错误示例 · 正确示例 禁止导致水合不匹配的不确定值
type/no-floating-promises 错误示例 · 正确示例 禁止悬空(未处理)的 Promise
type/no-reactivity-loss 错误示例 · 正确示例 禁止赋值和调用中对响应式值取普通快照
type/no-unsafe-template-binding 错误示例 · 正确示例 禁止解析为不安全类型的模板绑定
type/require-typed-emits 错误示例 · 正确示例 要求 defineEmits 具有类型定义
type/require-typed-props 错误示例 · 正确示例 要求 defineProps 具有类型定义
type/strict-boolean-expressions 错误示例 · 正确示例 要求脚本和模板条件使用安全的布尔表达式
vapor/no-inline-template 错误示例 · 正确示例 禁止已弃用的 inline-template 属性
vapor/no-vue-lifecycle-events 错误示例 · 正确示例 禁止 @vue:xxx 元素生命周期事件(Vapor 不支持)
vapor/prefer-static-class 错误示例 · 正确示例 字符串字面量优先使用静态 class,而不是动态 class 绑定
vapor/require-vapor-attribute 错误示例 · 正确示例 建议为 script setup 添加 vapor 属性
vize:croquis/cf/array-mutation 错误示例 · 正确示例 通过索引修改数组,无法被该响应式数组跟踪。
vize:croquis/cf/async-boundary 错误示例 · 正确示例 响应式状态跨越异步边界,可能被观察为过期值。
vize:croquis/cf/async-no-suspense 错误示例 · 正确示例 异步组件在没有 Suspense 边界的情况下渲染。
vize:croquis/cf/browser-api-ssr 错误示例 · 正确示例 在组件可能于服务端渲染的位置使用了浏览器专用 API。
vize:croquis/cf/circular-dep 错误示例 · 正确示例 组件相互导入,形成循环。
vize:croquis/cf/circular-reactive-dependency 错误示例 · 正确示例 响应式计算相互依赖,形成循环。
vize:croquis/cf/closure-captures-reactive 错误示例 · 正确示例 闭包捕获了响应式值,无法看到后续更新。
vize:croquis/cf/composable-outside-setup 错误示例 · 正确示例 组合式函数在 setup 外被调用。
vize:croquis/cf/computed-side-effects 错误示例 · 正确示例 计算 getter 写入状态或执行其他副作用。
vize:croquis/cf/deep-import 错误示例 · 正确示例 导入链超过项目允许的深度。
vize:croquis/cf/destructuring-breaks-reactivity 错误示例 · 正确示例 解构响应式对象会复制字段并丢失跟踪。
vize:croquis/cf/di-outside-setup 错误示例 · 正确示例 provide 或 inject 在 setup 外被调用。
vize:croquis/cf/dom-access-without-next-tick 错误示例 · 正确示例 在 Vue 完成更新刷新之前读取 DOM。
vize:croquis/cf/duplicate-id 错误示例 · 正确示例 多个组件使用同一个元素 id。
vize:croquis/cf/event-listener-leak 错误示例 · 正确示例 注册了事件监听器,却从未移除。
vize:croquis/cf/event-modifier 错误示例 · 正确示例 事件监听器使用了发出事件不支持的修饰符。
vize:croquis/cf/hydration-risk 错误示例 · 正确示例 此诊断代码归类多种响应性问题,包括将 prop 复制到 ref。它并不表示跨文件分析遍会检测所有 Date.now() 表达式。
vize:croquis/cf/inherit-attrs-unused 错误示例 · 正确示例 设置了 inheritAttrs: false,但组件从不读取属性。
vize:croquis/cf/inject-without-symbol 错误示例 · 正确示例 inject 使用普通键,而不是 InjectionKey symbol。
vize:croquis/cf/injected-async-mutation-race 错误示例 · 正确示例 注入值被可能发生竞态的异步任务修改。
vize:croquis/cf/lifecycle-outside-setup 错误示例 · 正确示例 生命周期钩子在 setup 外注册。
vize:croquis/cf/lifecycle-without-cleanup 错误示例 · 正确示例 生命周期钩子启动任务,却从不清理。
vize:croquis/cf/missing-required-prop 错误示例 · 正确示例 未传入必需的 prop。
vize:croquis/cf/missing-suspense 错误示例 · 正确示例 异步依赖在 Suspense 边界之外使用。
vize:croquis/cf/module-scope-reactive 错误示例 · 正确示例 响应式状态在模块作用域创建,被所有调用者共享。
vize:croquis/cf/multi-root-attrs 错误示例 · 正确示例 多根节点组件接收了属性,却没有放置目标。
vize:croquis/cf/mutated-after-escape 错误示例 · 正确示例 响应式对象逸出其所有者后被修改。
vize:croquis/cf/non-reactive-provide 错误示例 · 正确示例 提供的值不具响应性,后代无法看到更新。
vize:croquis/cf/non-unique-id 错误示例 · 正确示例 循环内的元素 id 对每个列表项并不唯一。
vize:croquis/cf/object-identity-comparison 错误示例 · 正确示例 响应式对象按身份比较,解包后身份会改变。
vize:croquis/cf/pinia-getter 错误示例 · 正确示例 Pinia getter 未通过 storeToRefs 读取,无法保持响应性。
vize:croquis/cf/prop-type-mismatch 错误示例 · 正确示例 传入的 prop 值与声明类型不匹配。
vize:croquis/cf/provide-inject-type 错误示例 · 正确示例 提供值与其 inject 类型不一致。
vize:croquis/cf/provide-without-symbol 错误示例 · 正确示例 provide 使用普通键,而不是 InjectionKey symbol。
vize:croquis/cf/reactive-export 错误示例 · 正确示例 响应式状态从模块导出。
vize:croquis/cf/reactivity-outside-setup 错误示例 · 正确示例 响应式 API 在 setup 外被调用。
vize:croquis/cf/reassignment-breaks-reactivity 错误示例 · 正确示例 重新赋值响应式绑定,将其替换为普通值。
vize:croquis/cf/reference-escapes-scope 错误示例 · 正确示例 响应式引用逸出拥有其生命周期的作用域。
vize:croquis/cf/setup-context-violation 错误示例 · 正确示例 setup 上下文被以 Vue 不允许的方式使用。
vize:croquis/cf/shallow-deep-access 错误示例 · 正确示例 读取 shallowReactive 或 shallowRef 的深层属性,却假定它受到跟踪。
vize:croquis/cf/spread-breaks-reactivity 错误示例 · 正确示例 展开响应式对象会复制值并丢失跟踪。
vize:croquis/cf/suspense-no-fallback 错误示例 · 正确示例 <Suspense> 没有后备内容。
vize:croquis/cf/template-ref-timing 错误示例 · 正确示例 模板 ref 在组件挂载之前被读取。
vize:croquis/cf/toraw-mutation 错误示例 · 正确示例 使用 toRaw 后修改了原始对象。
vize:croquis/cf/uncaught-error 错误示例 · 正确示例 组件可能抛错,却没有错误边界捕获。
vize:croquis/cf/undeclared-emit 错误示例 · 正确示例 组件发出了未声明的事件。
vize:croquis/cf/undeclared-prop 错误示例 · 正确示例 父组件传入了子组件未声明的 prop。
vize:croquis/cf/undefined-slot 错误示例 · 正确示例 父组件填充了子组件未暴露的插槽。
vize:croquis/cf/unhandled-event 错误示例 · 正确示例 子组件发出的事件没有父组件处理。
vize:croquis/cf/unmatched-inject 错误示例 · 正确示例 inject 指定的键没有任何祖先提供。
vize:croquis/cf/unmatched-listener 错误示例 · 正确示例 父组件监听了子组件不发出的事件。
vize:croquis/cf/unregistered-component 错误示例 · 正确示例 模板使用了未注册或导入的组件。
vize:croquis/cf/unresolved-import 错误示例 · 正确示例 导入无法解析为模块。
vize:croquis/cf/unused-attrs 错误示例 · 正确示例 透传属性传给了未使用它们的多根节点组件。
vize:croquis/cf/unused-emit 错误示例 · 正确示例 已声明的 emit 从未使用。
vize:croquis/cf/unused-provide 错误示例 · 正确示例 提供的键从未被注入。
vize:croquis/cf/value-extraction-breaks-reactivity 错误示例 · 正确示例 将响应式值读取到局部变量后丢失后续更新。
vize:croquis/cf/watch-can-be-computed 错误示例 · 正确示例 侦听器只将值复制到状态,可以改为计算属性。
vize:croquis/cf/watcheffect-async 错误示例 · 正确示例 watchEffect 启动异步任务,却无法清理上一轮执行。
vize:croquis/cf/watcher-outside-setup 错误示例 · 正确示例 watch 或 watchEffect 在 setup 外被调用。
vue/a11y-img-alt 错误示例 · 正确示例 要求图片提供 alt 属性,以支持无障碍访问
vue/attribute-hyphenation 错误示例 · 正确示例 规范自定义组件的属性命名风格
vue/attribute-order 错误示例 · 正确示例 要求属性保持一致的排列顺序
vue/component-definition-name-casing 错误示例 · 正确示例 要求组件定义名称使用 PascalCase 或 kebab-case
vue/component-name-in-template-casing 错误示例 · 正确示例 要求模板中的组件名称使用指定的大小写风格
vue/cross-file-attrs-fallthrough 错误示例 · 正确示例 父组件传入属性,但已解析子组件的根无法继承它们,也没有显式使用 $attrs。
vue/html-button-has-type 错误示例 · 正确示例 要求 button 元素显式指定有效的 type
vue/html-quotes 错误示例 · 正确示例 规范 HTML 属性的引号风格
vue/html-self-closing 错误示例 · 正确示例 规范自闭合标签风格
vue/max-template-complexity 错误示例 · 正确示例 限制组件自身模板的复杂度(圈复杂度和认知复杂度)
vue/multi-word-component-names 错误示例 · 正确示例 要求组件名称由多个单词组成
vue/mustache-interpolation-spacing 错误示例 · 正确示例 要求双花括号插值内部的空格保持一致
vue/no-array-index-key 错误示例 · 正确示例 禁止直接将 v-for 的索引变量用作 :key
vue/no-bare-strings-in-template 错误示例 · 正确示例 禁止在模板中直接写入应当国际化的用户可读文本
vue/no-boolean-attr-value 错误示例 · 正确示例 禁止为 HTML 布尔属性显式指定值
vue/no-child-content 错误示例 · 正确示例 禁止在使用 v-html 或 v-text 时提供子内容
vue/no-deprecated-filter 错误示例 · 正确示例 禁止使用已弃用的 Vue 2 管道运算符过滤器语法
vue/no-deprecated-functional-template 错误示例 · 正确示例 禁止在 SFC 的 <template> 上使用 functional 属性
vue/no-deprecated-html-element-is 错误示例 · 正确示例 禁止在原生 HTML 元素上使用已弃用的 is 属性
vue/no-deprecated-inline-template 错误示例 · 正确示例 禁止使用已弃用的 inline-template 属性
vue/no-deprecated-router-link-tag-prop 错误示例 · 正确示例 禁止在 <router-link> 上使用 tag prop
vue/no-deprecated-scope-attribute 错误示例 · 正确示例 禁止在 <template> 上使用已弃用的 scope 属性
vue/no-deprecated-slot-attribute 错误示例 · 正确示例 禁止使用已弃用的 slot 属性
vue/no-deprecated-slot-scope-attribute 错误示例 · 正确示例 禁止使用已弃用的 slot-scope 属性
vue/no-deprecated-v-bind-sync 错误示例 · 正确示例 禁止在 v-bind 上使用已弃用的 .sync 修饰符
vue/no-deprecated-v-is 错误示例 · 正确示例 禁止使用已废弃的 v-is 指令
vue/no-deprecated-v-on-native-modifier 错误示例 · 正确示例 禁止在 v-on 上使用已弃用的 .native 修饰符
vue/no-deprecated-v-on-number-modifiers 错误示例 · 正确示例 禁止在 v-on 上使用已弃用的数字 keyCode 修饰符
vue/no-dupe-v-else-if 错误示例 · 正确示例 禁止在 v-if / v-else-if 链中使用重复条件
vue/no-duplicate-attributes 错误示例 · 正确示例 禁止在同一元素上重复声明属性
vue/no-empty-component-block 错误示例 · 正确示例 禁止空的 SFC 块
vue/no-inline-style 错误示例 · 正确示例 不建议使用内联 style 属性
vue/no-invalid-html-attribute 错误示例 · 正确示例 禁止 HTML 属性使用无效的静态值
vue/no-lone-template 错误示例 · 正确示例 禁止不必要的 <template> 元素
vue/no-multi-spaces 错误示例 · 正确示例 禁止连续多个空格
vue/no-multiple-objects-in-class 错误示例 · 正确示例 禁止在 :class 数组绑定中使用多个对象字面量
vue/no-multiple-template-root 错误示例 · 正确示例 禁止模板包含多个根节点
vue/no-mutating-props 错误示例 · 正确示例 禁止修改组件 props
vue/no-negated-v-if-condition 错误示例 · 正确示例 禁止在含有 v-else 的条件链中使用否定的 v-if 条件
vue/no-non-component-keep-alive-child 错误示例 · 正确示例 禁止在 <KeepAlive> 的直属子层使用普通元素包装
vue/no-preprocessor-lang 错误示例 · 正确示例 不建议使用 CSS 预处理器,优先使用现代 CSS
vue/no-reserved-component-names 错误示例 · 正确示例 禁止使用保留名称作为组件名称
vue/no-root-v-if 错误示例 · 正确示例 禁止在模板的唯一根元素上使用 v-if
vue/no-script-non-standard-lang 错误示例 · 正确示例 不建议使用非标准的 script lang 值
vue/no-src-attribute 错误示例 · 正确示例 不建议在 SFC 块上使用 src 属性
vue/no-static-inline-styles 错误示例 · 正确示例 禁止静态内联 style 属性
vue/no-template-key 错误示例 · 正确示例 禁止在 <template> 上使用 key 属性
vue/no-template-lang 错误示例 · 正确示例 不建议在 template 块上使用 lang 属性
vue/no-template-shadow 错误示例 · 正确示例 禁止使用遮蔽外层作用域变量的变量名称
vue/no-template-target-blank 错误示例 · 正确示例 禁止使用 target="_blank" 而不设置 rel="noopener noreferrer"
vue/no-textarea-mustache 错误示例 · 正确示例 禁止在 <textarea> 内使用双花括号插值
vue/no-undefined-refs 错误示例 · 正确示例 禁止在模板中引用未定义的变量
vue/no-unsafe-url 错误示例 · 正确示例 警告可能不安全的 URL 绑定
vue/no-unsandboxed-iframe 错误示例 · 正确示例 要求 iframe 元素具有 sandbox 属性
vue/no-unused-components 错误示例 · 正确示例 禁止注册未在模板中使用的组件
vue/no-unused-properties 错误示例 · 正确示例 禁止 defineProps 中定义的未使用属性
vue/no-unused-refs 错误示例 · 正确示例 报告从未在 <script> 中引用的模板 ref(ref="x")
vue/no-unused-setup-bindings 错误示例 · 正确示例 禁止从未读取的 script setup 绑定
vue/no-unused-vars 错误示例 · 正确示例 禁止 v-for 和 v-slot 指令中未使用的变量定义
vue/no-use-v-else-with-v-for 错误示例 · 正确示例 禁止在同一元素上使用 v-else-if 或 v-else 与 v-for
vue/no-use-v-if-with-v-for 错误示例 · 正确示例 禁止在同一元素上使用 v-if 与 v-for
vue/no-useless-mustaches 错误示例 · 正确示例 禁止表达式为常量字符串字面量的双花括号插值
vue/no-useless-template-attributes 错误示例 · 正确示例 禁止在 <template> 元素上使用不起作用的属性
vue/no-useless-v-bind 错误示例 · 正确示例 禁止值为普通字符串字面量的 v-bind
vue/no-v-for-template-key-on-child 错误示例 · 正确示例 禁止在 <template v-for> 的子节点上使用 key
vue/no-v-html 错误示例 · 正确示例 警告使用 v-html,以避免 XSS 漏洞
vue/no-v-text 错误示例 · 正确示例 禁止 v-text 指令,优先使用双花括号插值
vue/no-v-text-v-html-on-component 错误示例 · 正确示例 禁止在组件元素上使用 v-text / v-html
vue/permitted-contents 错误示例 · 正确示例 要求符合 HTML 内容模型规则
vue/prefer-props-shorthand 错误示例 · 正确示例 建议使用 props 简写语法(Vue 3.4+)
vue/prefer-true-attribute-shorthand 错误示例 · 正确示例 优先使用绑定到 true 的布尔属性简写
vue/prop-name-casing 错误示例 · 正确示例 规范所声明 prop 名称的大小写风格
vue/require-component-is 错误示例 · 正确示例 要求 <component> 元素具有 v-bind:is
vue/require-component-registration 错误示例 · 正确示例 要求显式导入或注册组件
vue/require-scoped-style 错误示例 · 正确示例 要求 style 标签具有 scoped 属性
vue/require-toggle-inside-transition 错误示例 · 正确示例 要求 <transition> 包裹的元素具有切换条件
vue/require-v-for-key 错误示例 · 正确示例 要求 v-for 指令搭配 v-bind:key
vue/scoped-event-names 错误示例 · 正确示例 建议使用 context:event 格式的作用域事件名称
vue/sfc-element-order 错误示例 · 正确示例 要求 SFC 顶层元素保持一致的顺序
vue/single-style-block 错误示例 · 正确示例 建议只使用一个 style 块
vue/slot-name-casing 错误示例 · 正确示例 要求通过 v-slot 使用的具名插槽采用 kebab-case
vue/this-in-template 错误示例 · 正确示例 禁止在模板表达式中使用 this.
vue/use-unique-element-ids 错误示例 · 正确示例 要求使用 useId() 生成唯一元素 ID,而不是静态字面量
vue/use-v-on-exact 错误示例 · 正确示例 存在带按键修饰符的处理器时,要求在 v-on 上使用 .exact
vue/v-bind-style 错误示例 · 正确示例 规范 v-bind 指令风格
vue/v-on-event-hyphenation 错误示例 · 正确示例 要求组件上 v-on 中的自定义事件名称使用连字符
vue/v-on-handler-style 错误示例 · 正确示例 要求 v-on 处理器写为方法引用或内联函数
vue/v-on-style 错误示例 · 正确示例 规范 v-on 指令风格
vue/v-slot-style 错误示例 · 正确示例 规范 v-slot 指令风格
vue/valid-attribute-name 错误示例 · 正确示例 要求属性名称有效
vue/valid-template-root 错误示例 · 正确示例 要求 <template> 根节点符合 Vue 3 片段语义
vue/valid-v-bind 错误示例 · 正确示例 要求 v-bind 指令有效
vue/valid-v-cloak 错误示例 · 正确示例 要求 v-cloak 指令有效
vue/valid-v-else 错误示例 · 正确示例 要求 v-else 指令有效
vue/valid-v-else-if 错误示例 · 正确示例 要求 v-else-if 指令有效
vue/valid-v-for 错误示例 · 正确示例 要求 v-for 指令有效
vue/valid-v-html 错误示例 · 正确示例 要求 v-html 指令有效
vue/valid-v-if 错误示例 · 正确示例 要求 v-if 指令有效
vue/valid-v-is 错误示例 · 正确示例 要求 v-is 指令有效
vue/valid-v-memo 错误示例 · 正确示例 要求 v-memo 指令有效
vue/valid-v-model 错误示例 · 正确示例 要求 v-model 指令有效
vue/valid-v-on 错误示例 · 正确示例 要求 v-on 指令有效
vue/valid-v-once 错误示例 · 正确示例 要求 v-once 指令有效
vue/valid-v-pre 错误示例 · 正确示例 要求 v-pre 指令有效
vue/valid-v-show 错误示例 · 正确示例 要求 v-show 指令有效
vue/valid-v-slot 错误示例 · 正确示例 要求 v-slot 指令有效
vue/valid-v-text 错误示例 · 正确示例 要求 v-text 指令有效
vue/warn-custom-block 错误示例 · 正确示例 警告 SFC 文件中的自定义块
vue/warn-custom-directive 错误示例 · 正确示例 警告需要注册的自定义指令

全部规则 · 规则选项 · ESLint 迁移对应表 · 项目检查 · 组件间属性传递

a11y/alt-text

要求媒体元素提供替代文本

错误示例

正确示例

分组示例 · 规则参考

a11y/anchor-has-content

要求锚点元素具有可访问的内容

错误示例

正确示例

分组示例 · 规则参考

a11y/anchor-is-valid

要求锚点元素具有有效的 href

错误示例

正确示例

分组示例 · 规则参考

a11y/aria-props

禁止无效的 ARIA 属性

错误示例

正确示例

分组示例 · 规则参考

a11y/aria-role

具有 ARIA 角色的元素必须使用有效的非抽象 ARIA 角色

错误示例

正确示例

分组示例 · 规则参考

a11y/aria-unsupported-elements

禁止在不支持 ARIA 的元素上使用 ARIA 属性

错误示例

正确示例

分组示例 · 规则参考

a11y/click-events-have-key-events

要求点击事件配有键盘事件处理器

错误示例

正确示例

分组示例 · 规则参考

a11y/form-control-has-label

要求表单控件具有相关联的标签

错误示例

正确示例

分组示例 · 规则参考

a11y/heading-has-content

要求标题元素具有可访问的内容

错误示例

正确示例

分组示例 · 规则参考

a11y/heading-levels

禁止跳过标题层级

错误示例

正确示例

分组示例 · 规则参考

a11y/iframe-has-title

要求 iframe 元素具有 title 属性

错误示例

正确示例

分组示例 · 规则参考

a11y/img-alt

要求图片提供 alt 属性,以支持无障碍访问

错误示例

正确示例

分组示例 · 规则参考

a11y/interactive-supports-focus

要求具有交互角色的元素可获得焦点

错误示例

正确示例

分组示例 · 规则参考

a11y/label-has-for

要求标签具有相关联的表单控件

错误示例

正确示例

分组示例 · 规则参考

a11y/landmark-roles

验证地标角色的位置及唯一性

错误示例

正确示例

分组示例 · 规则参考

a11y/media-has-caption

要求媒体元素具有字幕

错误示例

正确示例

分组示例 · 规则参考

a11y/mouse-events-have-key-events

要求鼠标事件配有 focus/blur 事件

错误示例

正确示例

分组示例 · 规则参考

a11y/no-access-key

禁止使用 accesskey 属性

错误示例

正确示例

分组示例 · 规则参考

a11y/no-aria-hidden-on-focusable

禁止在可获得焦点的元素上使用 aria-hidden="true"

错误示例

正确示例

分组示例 · 规则参考

a11y/no-autofocus

禁止使用 autofocus 属性

错误示例

正确示例

分组示例 · 规则参考

a11y/no-distracting-elements

禁止 <marquee> 和 <blink> 等分散注意力的元素

错误示例

正确示例

分组示例 · 规则参考

a11y/no-i-for-icon

禁止使用 <i> 元素表示图标

错误示例

正确示例

分组示例 · 规则参考

a11y/no-redundant-roles

禁止多余的 ARIA 角色

错误示例

正确示例

分组示例 · 规则参考

a11y/no-refer-to-non-existent-id

禁止引用不存在的 ID

错误示例

正确示例

分组示例 · 规则参考

a11y/no-role-presentation-on-focusable

禁止在可获得焦点的元素上使用 role="presentation" 或 role="none"

错误示例

正确示例

分组示例 · 规则参考

a11y/no-static-element-interactions

禁止在静态元素上设置事件处理器

错误示例

正确示例

分组示例 · 规则参考

a11y/placeholder-label-option

要求 required 的 select 带有占位选项

错误示例

正确示例

分组示例 · 规则参考

a11y/role-has-required-aria-props

要求 ARIA 角色具有必需属性

错误示例

正确示例

分组示例 · 规则参考

a11y/tabindex-no-positive

禁止正数 tabindex 值

错误示例

正确示例

分组示例 · 规则参考

a11y/use-list

建议为类似项目符号的文本使用列表元素

错误示例

正确示例

分组示例 · 规则参考

css/no-display-none

建议使用 v-show 代替 display: none

错误示例

正确示例

分组示例 · 规则参考

css/no-hardcoded-values

建议使用 CSS 变量代替硬编码值

错误示例

正确示例

分组示例 · 规则参考

css/no-id-selectors

不建议在 CSS 中使用 ID 选择器

错误示例

正确示例

分组示例 · 规则参考

css/no-important

不建议在 CSS 中使用 !important

错误示例

正确示例

分组示例 · 规则参考

css/no-utility-classes

警告在组件样式中实现工具类

错误示例

正确示例

分组示例 · 规则参考

css/no-v-bind-performance

警告 CSS v-bind() 的性能开销

错误示例

正确示例

分组示例 · 规则参考

css/prefer-logical-properties

建议使用 CSS 逻辑属性,以更好地支持国际化

错误示例

正确示例

分组示例 · 规则参考

css/prefer-nested-selectors

建议为后代选择器使用 CSS 嵌套

错误示例

正确示例

分组示例 · 规则参考

css/prefer-slotted

建议使用 ::v-slotted() 为插槽内容设置样式

错误示例

正确示例

分组示例 · 规则参考

css/require-font-display

要求 @font-face 规则具有 font-display

错误示例

正确示例

分组示例 · 规则参考

应用内部链接优先使用 NuxtLink

错误示例

正确示例

分组示例 · 规则参考

ecosystem/pinia-prefer-store-to-refs

解构 Pinia store 时优先使用 storeToRefs()

错误示例

正确示例

分组示例 · 规则参考

要求 RouterLink 和 NuxtLink 组件具有 to 目标

错误示例

正确示例

分组示例 · 规则参考

要求 Void Vue Link 组件具有 href

错误示例

正确示例

分组示例 · 规则参考

验证 Void Vue Link 的静态 method prop

错误示例

正确示例

分组示例 · 规则参考

ecosystem/vue-i18n-no-missing-key

报告本地 SFC 消息中不存在的静态 vue-i18n 键

错误示例

正确示例

分组示例 · 规则参考

ecosystem/vue-router-extra-param

路由未声明 tab;Vue Router 会丢弃它。

错误示例

正确示例

分组示例 · 规则参考

ecosystem/vue-router-missing-param

缺少必需的 postId;依赖当前路由并不稳健。

错误示例

正确示例

分组示例 · 规则参考

ecosystem/vue-router-param-type

postId 不是可重复参数,因此数组无效。

错误示例

正确示例

分组示例 · 规则参考

RouterLink 优先使用具名路由对象,而不是静态路径字符串

错误示例

正确示例

分组示例 · 规则参考

ecosystem/vue-router-prefer-named-push

Vue Router 编程式导航优先使用具名路由对象

错误示例

正确示例

分组示例 · 规则参考

ecosystem/vue-router-unknown-route

名称不在完整且已安装的路由器中。

错误示例

正确示例

分组示例 · 规则参考

ecosystem/vue-test-utils-no-html-snapshot

避免在 Vue Test Utils 测试中对 wrapper.html() 生成快照

错误示例

正确示例

分组示例 · 规则参考

html/cross-component-nesting

检查导入组件组合后的实际 HTML 嵌套。

错误示例

正确示例

分组示例 · 规则参考

html/deprecated-attr

禁止已弃用的 HTML 属性

错误示例

正确示例

分组示例 · 规则参考

html/deprecated-element

禁止已弃用的 HTML 元素

错误示例

正确示例

分组示例 · 规则参考

html/id-duplication

禁止重复的元素 ID

错误示例

正确示例

分组示例 · 规则参考

html/no-consecutive-br

禁止连续的 <br> 元素

错误示例

正确示例

分组示例 · 规则参考

html/no-dupe-style-properties

禁止内联 style 属性中重复的属性声明

错误示例

正确示例

分组示例 · 规则参考

html/no-duplicate-class

禁止静态 class 属性中重复的类名

错误示例

正确示例

分组示例 · 规则参考

html/no-duplicate-dt

禁止 <dl> 中重复的 <dt> 名称

错误示例

正确示例

分组示例 · 规则参考

html/no-empty-palpable-content

禁止预期具有可见内容的空元素

错误示例

正确示例

分组示例 · 规则参考

html/require-datetime

要求 <time> 元素具有 datetime 属性

错误示例

正确示例

分组示例 · 规则参考

musea/no-empty-variant

禁止空的 <variant> 块

错误示例

正确示例

分组示例 · 规则参考

musea/prefer-design-tokens

优先使用设计令牌 CSS 变量,而不是硬编码的原始值

错误示例

正确示例

分组示例 · 规则参考

musea/require-component

要求 <art> 块具有 component 属性

错误示例

正确示例

分组示例 · 规则参考

musea/require-title

要求 <art> 块具有 title 属性

错误示例

正确示例

分组示例 · 规则参考

musea/unique-variant-names

要求 variant 名称唯一

错误示例

正确示例

分组示例 · 规则参考

musea/valid-variant

要求 <variant> 块具有 name 属性

错误示例

正确示例

分组示例 · 规则参考

nuxt/no-nuxt-config-test-key

禁止在 Nuxt 配置中设置 test 键

错误示例

正确示例

分组示例 · 规则参考

nuxt/no-page-meta-runtime-values

禁止在 definePageMeta 的立即求值层使用运行时上下文值;该层在构建时被提取到独立代码块,并在组件 setup 之前运行

错误示例

正确示例

分组示例 · 规则参考

nuxt/nuxt-config-keys-order

优先使用推荐的 Nuxt 配置属性顺序

错误示例

正确示例

分组示例 · 规则参考

nuxt/prefer-import-meta

优先使用 import.meta.*,而不是 process.*

错误示例

正确示例

分组示例 · 规则参考

petite-vue/no-unsupported-directive

禁止 petite-vue 不支持的指令

错误示例

正确示例

分组示例 · 规则参考

petite-vue/valid-v-effect

要求 v-effect 具有非空表达式

错误示例

正确示例

分组示例 · 规则参考

petite-vue/valid-v-scope

要求 v-scope 绑定对象字面量

错误示例

正确示例

分组示例 · 规则参考

script/component-options-name-casing

要求组件 name 选项使用 PascalCase

错误示例

正确示例

分组示例 · 规则参考

script/custom-event-name-casing

要求发出的自定义事件名称使用 camelCase

错误示例

正确示例

分组示例 · 规则参考

script/define-emits-declaration

要求使用类型形式 defineEmits<{}>(),而不是运行时或数组形式

错误示例

正确示例

分组示例 · 规则参考

script/define-macros-order

要求 <script setup> 中的 Vue 编译器宏保持一致的顺序

错误示例

正确示例

分组示例 · 规则参考

script/define-props-declaration

要求使用类型形式 defineProps<{ ... }>(),而不是运行时或对象形式

错误示例

正确示例

分组示例 · 规则参考

script/define-props-destructuring

要求 <script setup> 中的 defineProps 解构风格保持一致

错误示例

正确示例

分组示例 · 规则参考

script/no-arrow-functions-in-watch

禁止将箭头函数用作 Options API watch 处理器

错误示例

正确示例

分组示例 · 规则参考

script/no-async-in-computed

禁止计算属性中的异步函数

错误示例

正确示例

分组示例 · 规则参考

script/no-boolean-default

禁止为 Boolean prop 设置默认值

错误示例

正确示例

分组示例 · 规则参考

script/no-deep-destructure-in-props

禁止在 defineProps 中进行深层嵌套解构

错误示例

正确示例

分组示例 · 规则参考

script/no-deprecated-data-object-declaration

禁止将对象字面量作为组件 data 选项(Vue 3 要求函数)

错误示例

正确示例

分组示例 · 规则参考

script/no-deprecated-destroyed-lifecycle

禁止已弃用的 destroyed 和 beforeDestroy 生命周期钩子

错误示例

正确示例

分组示例 · 规则参考

script/no-deprecated-dollar-listeners-api

禁止 Vue 3 已移除的 $listeners 实例属性(已合并到 $attrs)

错误示例

正确示例

分组示例 · 规则参考

script/no-deprecated-dollar-scopedslots-api

禁止 Vue 3 已移除的 $scopedSlots 实例属性(使用 $slots)

错误示例

正确示例

分组示例 · 规则参考

script/no-deprecated-events-api

禁止已移除的 Vue 2 事件 API($on / $off / $once)

错误示例

正确示例

分组示例 · 规则参考

script/no-deprecated-props-default-this

禁止在 prop 默认值或校验函数中使用 this(Vue 3 已移除)

错误示例

正确示例

分组示例 · 规则参考

script/no-dupe-keys

禁止 Options API 的 props/data/computed/methods/setup/inject 之间重复的键

错误示例

正确示例

分组示例 · 规则参考

script/no-duplicate-attr-inheritance

标记重复应用透传属性的组件

错误示例

正确示例

分组示例 · 规则参考

script/no-export-in-script-setup

禁止 <script setup> 内的 export 语句

错误示例

正确示例

分组示例 · 规则参考

script/no-expose-after-await

禁止在 await 之后调用 expose() 和 defineExpose()

错误示例

正确示例

分组示例 · 规则参考

script/no-get-current-instance

禁止在 Vapor 模式使用 getCurrentInstance()(返回 null)

错误示例

正确示例

分组示例 · 规则参考

script/no-import-compiler-macros

禁止导入自动可用的 Vue 编译器宏

错误示例

正确示例

分组示例 · 规则参考

script/no-internal-imports

禁止从 Vue 内部模块导入

错误示例

正确示例

分组示例 · 规则参考

script/no-lifecycle-after-await

禁止在 setup() 中 await 之后注册生命周期钩子

错误示例

正确示例

分组示例 · 规则参考

script/no-multiple-slot-args

禁止向作用域插槽函数调用传入多个参数

错误示例

正确示例

分组示例 · 规则参考

script/no-next-tick

禁止面向 Vapor 的组件使用 nextTick()

错误示例

正确示例

分组示例 · 规则参考

script/no-options-api

禁止 Vapor 模式中的 Options API 模式

错误示例

正确示例

分组示例 · 规则参考

script/no-potential-component-option-typo

标记 Options API 组件选项名称中的疑似拼写错误

错误示例

正确示例

分组示例 · 规则参考

script/no-reactive-destructure

禁止导致响应性丢失的响应式对象解构

错误示例

正确示例

分组示例 · 规则参考

script/no-ref-as-operand

要求将 ref 绑定变量用作操作数时通过 .value 访问

错误示例

正确示例

分组示例 · 规则参考

script/no-required-prop-with-default

禁止 prop 同时具有 required: true 和默认值

错误示例

正确示例

分组示例 · 规则参考

script/no-reserved-identifiers

禁止使用 Vue 编译器保留标识符

错误示例

正确示例

分组示例 · 规则参考

script/no-reserved-keys

禁止将 Vue 保留名称用作 Options API props/data/computed/methods/setup/inject 键

错误示例

正确示例

分组示例 · 规则参考

script/no-reserved-props

禁止在组件 props 声明中使用保留名称

错误示例

正确示例

分组示例 · 规则参考

script/no-restricted-globals

禁止直接引用必须通过类型化包装器访问的运行时环境全局变量

错误示例

正确示例

分组示例 · 规则参考

script/no-restricted-members

禁止项目配置的 object.property 成员访问

错误示例

正确示例

分组示例 · 规则参考

script/no-side-effects-in-computed-properties

禁止 Options API 计算 getter 中的副作用

错误示例

正确示例

分组示例 · 规则参考

script/no-top-level-ref-in-script

禁止顶层 ref/reactive,以防止跨请求状态污染

错误示例

正确示例

分组示例 · 规则参考

script/no-unstable-nested-components

禁止在 setup 或 render 函数内定义组件

错误示例

正确示例

分组示例 · 规则参考

script/no-unused-emit-declarations

标记已声明却从未发出的事件

错误示例

正确示例

分组示例 · 规则参考

script/no-use-computed-property-like-method

禁止像方法一样调用 Options API 计算属性

错误示例

正确示例

分组示例 · 规则参考

script/no-watch-after-await

禁止在 setup() 中 await 之后注册未保留停止句柄的侦听器

错误示例

正确示例

分组示例 · 规则参考

script/no-with-defaults

不建议使用 withDefaults,优先使用解构默认值(Vue 3.5+)

错误示例

正确示例

分组示例 · 规则参考

script/prefer-computed

响应式派生状态优先使用 computed()

错误示例

正确示例

分组示例 · 规则参考

script/prefer-define-options

优先使用 defineOptions(),而不是仅设置 name/inheritAttrs 的普通 <script>

错误示例

正确示例

分组示例 · 规则参考

script/prefer-import-from-vue

优先从 'vue' 导入,而不是内部包

错误示例

正确示例

分组示例 · 规则参考

script/prefer-ref-over-reactive

建议使用 ref() 而不是 reactive() 管理状态

错误示例

正确示例

分组示例 · 规则参考

script/prefer-use-attrs

建议使用 useAttrs() 而不是 context.attrs

错误示例

正确示例

分组示例 · 规则参考

script/prefer-use-id

建议使用 useId() 生成唯一 ID(Vue 3.5+)

错误示例

正确示例

分组示例 · 规则参考

script/prefer-use-slots

建议使用 useSlots() 而不是 context.slots

错误示例

正确示例

分组示例 · 规则参考

script/prefer-use-template-ref

模板引用建议使用 useTemplateRef 而不是 ref(Vue 3.5+)

错误示例

正确示例

分组示例 · 规则参考

script/require-default-prop

要求每个可选的非 Boolean prop 具有默认值

错误示例

正确示例

分组示例 · 规则参考

script/require-explicit-emits

要求发出的事件在 defineEmits 或 emits 选项中声明

错误示例

正确示例

分组示例 · 规则参考

script/require-explicit-slots

要求通过 useSlots() 使用的插槽由 defineSlots<...>() 显式定义类型

错误示例

正确示例

分组示例 · 规则参考

script/require-function-return-type

要求函数具有返回类型注解

错误示例

正确示例

分组示例 · 规则参考

script/require-prop-type-constructor

要求 prop 的 type 值是构造器,而不是字符串字面量

错误示例

正确示例

分组示例 · 规则参考

script/require-prop-types

要求每个 prop 声明类型

错误示例

正确示例

分组示例 · 规则参考

script/require-symbol-provide

建议使用 Symbol 作为 provide/inject 的注入键

错误示例

正确示例

分组示例 · 规则参考

script/require-typed-object-prop

要求运行时类型为 Object 或 Array 的 prop 具有显式类型

错误示例

正确示例

分组示例 · 规则参考

script/require-typed-ref

要求无初始值、null 或 undefined 初始化的 ref() 具有显式类型参数

错误示例

正确示例

分组示例 · 规则参考

script/require-valid-default-prop

要求 prop 默认值符合声明类型

错误示例

正确示例

分组示例 · 规则参考

script/return-in-computed-property

要求每个计算 getter 返回值

错误示例

正确示例

分组示例 · 规则参考

script/return-in-emits-validator

要求每个 Options API emits 校验函数返回值

错误示例

正确示例

分组示例 · 规则参考

script/valid-define-emits

要求 defineEmits() 用法有效(不同时提供类型和运行时参数、不引用局部变量、只调用一次)

错误示例

正确示例

分组示例 · 规则参考

script/valid-define-options

要求 defineOptions() 用法有效(单个对象参数、不包含 props/emits/expose/slots)

错误示例

正确示例

分组示例 · 规则参考

script/valid-define-props

要求 defineProps() 用法有效(只调用一次、不同时提供类型和运行时参数、不引用局部变量)

错误示例

正确示例

分组示例 · 规则参考

script/valid-next-tick

要求 nextTick() 调用结果被等待、链式处理,或提供回调

错误示例

正确示例

分组示例 · 规则参考

ssr/no-browser-globals-in-ssr

禁止 SSR 上下文中的浏览器专用全局变量

错误示例

正确示例

分组示例 · 规则参考

ssr/no-hydration-mismatch

禁止导致水合不匹配的不确定值

错误示例

正确示例

分组示例 · 规则参考

type/no-floating-promises

禁止悬空(未处理)的 Promise

错误示例

正确示例

分组示例 · 规则参考

type/no-reactivity-loss

禁止赋值和调用中对响应式值取普通快照

错误示例

正确示例

分组示例 · 规则参考

type/no-unsafe-template-binding

禁止解析为不安全类型的模板绑定

错误示例

正确示例

分组示例 · 规则参考

type/require-typed-emits

要求 defineEmits 具有类型定义

错误示例

正确示例

分组示例 · 规则参考

type/require-typed-props

要求 defineProps 具有类型定义

错误示例

正确示例

分组示例 · 规则参考

type/strict-boolean-expressions

要求脚本和模板条件使用安全的布尔表达式

错误示例

正确示例

分组示例 · 规则参考

vapor/no-inline-template

禁止已弃用的 inline-template 属性

错误示例

正确示例

分组示例 · 规则参考

vapor/no-vue-lifecycle-events

禁止 @vue:xxx 元素生命周期事件(Vapor 不支持)

错误示例

正确示例

分组示例 · 规则参考

vapor/prefer-static-class

字符串字面量优先使用静态 class,而不是动态 class 绑定

错误示例

正确示例

分组示例 · 规则参考

vapor/require-vapor-attribute

建议为 script setup 添加 vapor 属性

错误示例

正确示例

分组示例 · 规则参考

vize:croquis/cf/array-mutation

通过索引修改数组,无法被该响应式数组跟踪。

错误示例

正确示例

分组示例 · 规则参考

vize:croquis/cf/async-boundary

响应式状态跨越异步边界,可能被观察为过期值。

错误示例

正确示例

分组示例 · 规则参考

vize:croquis/cf/async-no-suspense

异步组件在没有 Suspense 边界的情况下渲染。

错误示例

正确示例

分组示例 · 规则参考

vize:croquis/cf/browser-api-ssr

在组件可能于服务端渲染的位置使用了浏览器专用 API。

错误示例

正确示例

分组示例 · 规则参考

vize:croquis/cf/circular-dep

组件相互导入,形成循环。

错误示例

正确示例

分组示例 · 规则参考

vize:croquis/cf/circular-reactive-dependency

响应式计算相互依赖,形成循环。

错误示例

正确示例

分组示例 · 规则参考

vize:croquis/cf/closure-captures-reactive

闭包捕获了响应式值,无法看到后续更新。

错误示例

正确示例

分组示例 · 规则参考

vize:croquis/cf/composable-outside-setup

组合式函数在 setup 外被调用。

错误示例

正确示例

分组示例 · 规则参考

vize:croquis/cf/computed-side-effects

计算 getter 写入状态或执行其他副作用。

错误示例

正确示例

分组示例 · 规则参考

vize:croquis/cf/deep-import

导入链超过项目允许的深度。

错误示例

正确示例

分组示例 · 规则参考

vize:croquis/cf/destructuring-breaks-reactivity

解构响应式对象会复制字段并丢失跟踪。

错误示例

正确示例

分组示例 · 规则参考

vize:croquis/cf/di-outside-setup

provide 或 inject 在 setup 外被调用。

错误示例

正确示例

分组示例 · 规则参考

vize:croquis/cf/dom-access-without-next-tick

在 Vue 完成更新刷新之前读取 DOM。

错误示例

正确示例

分组示例 · 规则参考

vize:croquis/cf/duplicate-id

多个组件使用同一个元素 id。

错误示例

正确示例

分组示例 · 规则参考

vize:croquis/cf/event-listener-leak

注册了事件监听器,却从未移除。

错误示例

正确示例

分组示例 · 规则参考

vize:croquis/cf/event-modifier

事件监听器使用了发出事件不支持的修饰符。

错误示例

正确示例

分组示例 · 规则参考

vize:croquis/cf/hydration-risk

此诊断代码归类多种响应性问题,包括将 prop 复制到 ref。它并不表示跨文件分析遍会检测所有 Date.now() 表达式。

错误示例

正确示例

分组示例 · 规则参考

vize:croquis/cf/inherit-attrs-unused

设置了 inheritAttrs: false,但组件从不读取属性。

错误示例

正确示例

分组示例 · 规则参考

vize:croquis/cf/inject-without-symbol

inject 使用普通键,而不是 InjectionKey symbol。

错误示例

正确示例

分组示例 · 规则参考

vize:croquis/cf/injected-async-mutation-race

注入值被可能发生竞态的异步任务修改。

错误示例

正确示例

分组示例 · 规则参考

vize:croquis/cf/lifecycle-outside-setup

生命周期钩子在 setup 外注册。

错误示例

正确示例

分组示例 · 规则参考

vize:croquis/cf/lifecycle-without-cleanup

生命周期钩子启动任务,却从不清理。

错误示例

正确示例

分组示例 · 规则参考

vize:croquis/cf/missing-required-prop

未传入必需的 prop。

错误示例

正确示例

分组示例 · 规则参考

vize:croquis/cf/missing-suspense

异步依赖在 Suspense 边界之外使用。

错误示例

正确示例

分组示例 · 规则参考

vize:croquis/cf/module-scope-reactive

响应式状态在模块作用域创建,被所有调用者共享。

错误示例

正确示例

分组示例 · 规则参考

vize:croquis/cf/multi-root-attrs

多根节点组件接收了属性,却没有放置目标。

错误示例

正确示例

分组示例 · 规则参考

vize:croquis/cf/mutated-after-escape

响应式对象逸出其所有者后被修改。

错误示例

正确示例

分组示例 · 规则参考

vize:croquis/cf/non-reactive-provide

提供的值不具响应性,后代无法看到更新。

错误示例

正确示例

分组示例 · 规则参考

vize:croquis/cf/non-unique-id

循环内的元素 id 对每个列表项并不唯一。

错误示例

正确示例

分组示例 · 规则参考

vize:croquis/cf/object-identity-comparison

响应式对象按身份比较,解包后身份会改变。

错误示例

正确示例

分组示例 · 规则参考

vize:croquis/cf/pinia-getter

Pinia getter 未通过 storeToRefs 读取,无法保持响应性。

错误示例

正确示例

分组示例 · 规则参考

vize:croquis/cf/prop-type-mismatch

传入的 prop 值与声明类型不匹配。

错误示例

正确示例

分组示例 · 规则参考

vize:croquis/cf/provide-inject-type

提供值与其 inject 类型不一致。

错误示例

正确示例

分组示例 · 规则参考

vize:croquis/cf/provide-without-symbol

provide 使用普通键,而不是 InjectionKey symbol。

错误示例

正确示例

分组示例 · 规则参考

vize:croquis/cf/reactive-export

响应式状态从模块导出。

错误示例

正确示例

分组示例 · 规则参考

vize:croquis/cf/reactivity-outside-setup

响应式 API 在 setup 外被调用。

错误示例

正确示例

分组示例 · 规则参考

vize:croquis/cf/reassignment-breaks-reactivity

重新赋值响应式绑定,将其替换为普通值。

错误示例

正确示例

分组示例 · 规则参考

vize:croquis/cf/reference-escapes-scope

响应式引用逸出拥有其生命周期的作用域。

错误示例

正确示例

分组示例 · 规则参考

vize:croquis/cf/setup-context-violation

setup 上下文被以 Vue 不允许的方式使用。

错误示例

正确示例

分组示例 · 规则参考

vize:croquis/cf/shallow-deep-access

读取 shallowReactive 或 shallowRef 的深层属性,却假定它受到跟踪。

错误示例

正确示例

分组示例 · 规则参考

vize:croquis/cf/spread-breaks-reactivity

展开响应式对象会复制值并丢失跟踪。

错误示例

正确示例

分组示例 · 规则参考

vize:croquis/cf/suspense-no-fallback

<Suspense> 没有后备内容。

错误示例

正确示例

分组示例 · 规则参考

vize:croquis/cf/template-ref-timing

模板 ref 在组件挂载之前被读取。

错误示例

正确示例

分组示例 · 规则参考

vize:croquis/cf/toraw-mutation

使用 toRaw 后修改了原始对象。

错误示例

正确示例

分组示例 · 规则参考

vize:croquis/cf/uncaught-error

组件可能抛错,却没有错误边界捕获。

错误示例

正确示例

分组示例 · 规则参考

vize:croquis/cf/undeclared-emit

组件发出了未声明的事件。

错误示例

正确示例

分组示例 · 规则参考

vize:croquis/cf/undeclared-prop

父组件传入了子组件未声明的 prop。

错误示例

正确示例

分组示例 · 规则参考

vize:croquis/cf/undefined-slot

父组件填充了子组件未暴露的插槽。

错误示例

正确示例

分组示例 · 规则参考

vize:croquis/cf/unhandled-event

子组件发出的事件没有父组件处理。

错误示例

正确示例

分组示例 · 规则参考

vize:croquis/cf/unmatched-inject

inject 指定的键没有任何祖先提供。

错误示例

正确示例

分组示例 · 规则参考

vize:croquis/cf/unmatched-listener

父组件监听了子组件不发出的事件。

错误示例

正确示例

分组示例 · 规则参考

vize:croquis/cf/unregistered-component

模板使用了未注册或导入的组件。

错误示例

正确示例

分组示例 · 规则参考

vize:croquis/cf/unresolved-import

导入无法解析为模块。

错误示例

正确示例

分组示例 · 规则参考

vize:croquis/cf/unused-attrs

透传属性传给了未使用它们的多根节点组件。

错误示例

正确示例

分组示例 · 规则参考

vize:croquis/cf/unused-emit

已声明的 emit 从未使用。

错误示例

正确示例

分组示例 · 规则参考

vize:croquis/cf/unused-provide

提供的键从未被注入。

错误示例

正确示例

分组示例 · 规则参考

vize:croquis/cf/value-extraction-breaks-reactivity

将响应式值读取到局部变量后丢失后续更新。

错误示例

正确示例

分组示例 · 规则参考

vize:croquis/cf/watch-can-be-computed

侦听器只将值复制到状态,可以改为计算属性。

错误示例

正确示例

分组示例 · 规则参考

vize:croquis/cf/watcheffect-async

watchEffect 启动异步任务,却无法清理上一轮执行。

错误示例

正确示例

分组示例 · 规则参考

vize:croquis/cf/watcher-outside-setup

watch 或 watchEffect 在 setup 外被调用。

错误示例

正确示例

分组示例 · 规则参考

vue/a11y-img-alt

要求图片提供 alt 属性,以支持无障碍访问

错误示例

正确示例

分组示例 · 规则参考

vue/attribute-hyphenation

规范自定义组件的属性命名风格

错误示例

正确示例

分组示例 · 规则参考

vue/attribute-order

要求属性保持一致的排列顺序

错误示例

正确示例

分组示例 · 规则参考

vue/component-definition-name-casing

要求组件定义名称使用 PascalCase 或 kebab-case

错误示例

正确示例

分组示例 · 规则参考

vue/component-name-in-template-casing

要求模板中的组件名称使用指定的大小写风格

错误示例

正确示例

分组示例 · 规则参考

vue/cross-file-attrs-fallthrough

父组件传入属性,但已解析子组件的根无法继承它们,也没有显式使用 $attrs。

错误示例

正确示例

分组示例 · 规则参考

vue/html-button-has-type

要求 button 元素显式指定有效的 type

错误示例

正确示例

分组示例 · 规则参考

vue/html-quotes

规范 HTML 属性的引号风格

错误示例

正确示例

分组示例 · 规则参考

vue/html-self-closing

规范自闭合标签风格

错误示例

正确示例

分组示例 · 规则参考

vue/max-template-complexity

限制组件自身模板的复杂度(圈复杂度和认知复杂度)

错误示例

正确示例

分组示例 · 规则参考

vue/multi-word-component-names

要求组件名称由多个单词组成

错误示例

正确示例

分组示例 · 规则参考

vue/mustache-interpolation-spacing

要求双花括号插值内部的空格保持一致

错误示例

正确示例

分组示例 · 规则参考

vue/no-array-index-key

禁止直接将 v-for 的索引变量用作 :key

错误示例

正确示例

分组示例 · 规则参考

vue/no-bare-strings-in-template

禁止在模板中直接写入应当国际化的用户可读文本

错误示例

正确示例

分组示例 · 规则参考

vue/no-boolean-attr-value

禁止为 HTML 布尔属性显式指定值

错误示例

正确示例

分组示例 · 规则参考

vue/no-child-content

禁止在使用 v-html 或 v-text 时提供子内容

错误示例

正确示例

分组示例 · 规则参考

vue/no-deprecated-filter

禁止使用已弃用的 Vue 2 管道运算符过滤器语法

错误示例

正确示例

分组示例 · 规则参考

vue/no-deprecated-functional-template

禁止在 SFC 的 <template> 上使用 functional 属性

错误示例

正确示例

分组示例 · 规则参考

vue/no-deprecated-html-element-is

禁止在原生 HTML 元素上使用已弃用的 is 属性

错误示例

正确示例

分组示例 · 规则参考

vue/no-deprecated-inline-template

禁止使用已弃用的 inline-template 属性

错误示例

正确示例

分组示例 · 规则参考

禁止在 <router-link> 上使用 tag prop

错误示例

正确示例

分组示例 · 规则参考

vue/no-deprecated-scope-attribute

禁止在 <template> 上使用已弃用的 scope 属性

错误示例

正确示例

分组示例 · 规则参考

vue/no-deprecated-slot-attribute

禁止使用已弃用的 slot 属性

错误示例

正确示例

分组示例 · 规则参考

vue/no-deprecated-slot-scope-attribute

禁止使用已弃用的 slot-scope 属性

错误示例

正确示例

分组示例 · 规则参考

vue/no-deprecated-v-bind-sync

禁止在 v-bind 上使用已弃用的 .sync 修饰符

错误示例

正确示例

分组示例 · 规则参考

vue/no-deprecated-v-is

禁止使用已废弃的 v-is 指令

错误示例

正确示例

分组示例 · 规则参考

vue/no-deprecated-v-on-native-modifier

禁止在 v-on 上使用已弃用的 .native 修饰符

错误示例

正确示例

分组示例 · 规则参考

vue/no-deprecated-v-on-number-modifiers

禁止在 v-on 上使用已弃用的数字 keyCode 修饰符

错误示例

正确示例

分组示例 · 规则参考

vue/no-dupe-v-else-if

禁止在 v-if / v-else-if 链中使用重复条件

错误示例

正确示例

分组示例 · 规则参考

vue/no-duplicate-attributes

禁止在同一元素上重复声明属性

错误示例

正确示例

分组示例 · 规则参考

vue/no-empty-component-block

禁止空的 SFC 块

错误示例

正确示例

分组示例 · 规则参考

vue/no-inline-style

不建议使用内联 style 属性

错误示例

正确示例

分组示例 · 规则参考

vue/no-invalid-html-attribute

禁止 HTML 属性使用无效的静态值

错误示例

正确示例

分组示例 · 规则参考

vue/no-lone-template

禁止不必要的 <template> 元素

错误示例

正确示例

分组示例 · 规则参考

vue/no-multi-spaces

禁止连续多个空格

错误示例

正确示例

分组示例 · 规则参考

vue/no-multiple-objects-in-class

禁止在 :class 数组绑定中使用多个对象字面量

错误示例

正确示例

分组示例 · 规则参考

vue/no-multiple-template-root

禁止模板包含多个根节点

错误示例

正确示例

分组示例 · 规则参考

vue/no-mutating-props

禁止修改组件 props

错误示例

正确示例

分组示例 · 规则参考

vue/no-negated-v-if-condition

禁止在含有 v-else 的条件链中使用否定的 v-if 条件

错误示例

正确示例

分组示例 · 规则参考

vue/no-non-component-keep-alive-child

禁止在 <KeepAlive> 的直属子层使用普通元素包装

错误示例

正确示例

分组示例 · 规则参考

vue/no-preprocessor-lang

不建议使用 CSS 预处理器,优先使用现代 CSS

错误示例

正确示例

分组示例 · 规则参考

vue/no-reserved-component-names

禁止使用保留名称作为组件名称

错误示例

正确示例

分组示例 · 规则参考

vue/no-root-v-if

禁止在模板的唯一根元素上使用 v-if

错误示例

正确示例

分组示例 · 规则参考

vue/no-script-non-standard-lang

不建议使用非标准的 script lang 值

错误示例

正确示例

分组示例 · 规则参考

vue/no-src-attribute

不建议在 SFC 块上使用 src 属性

错误示例

正确示例

分组示例 · 规则参考

vue/no-static-inline-styles

禁止静态内联 style 属性

错误示例

正确示例

分组示例 · 规则参考

vue/no-template-key

禁止在 <template> 上使用 key 属性

错误示例

正确示例

分组示例 · 规则参考

vue/no-template-lang

不建议在 template 块上使用 lang 属性

错误示例

正确示例

分组示例 · 规则参考

vue/no-template-shadow

禁止使用遮蔽外层作用域变量的变量名称

错误示例

正确示例

分组示例 · 规则参考

vue/no-template-target-blank

禁止使用 target="_blank" 而不设置 rel="noopener noreferrer"

错误示例

正确示例

分组示例 · 规则参考

vue/no-textarea-mustache

禁止在 <textarea> 内使用双花括号插值

错误示例

正确示例

分组示例 · 规则参考

vue/no-undefined-refs

禁止在模板中引用未定义的变量

错误示例

正确示例

分组示例 · 规则参考

vue/no-unsafe-url

警告可能不安全的 URL 绑定

错误示例

正确示例

分组示例 · 规则参考

vue/no-unsandboxed-iframe

要求 iframe 元素具有 sandbox 属性

错误示例

正确示例

分组示例 · 规则参考

vue/no-unused-components

禁止注册未在模板中使用的组件

错误示例

正确示例

分组示例 · 规则参考

vue/no-unused-properties

禁止 defineProps 中定义的未使用属性

错误示例

正确示例

分组示例 · 规则参考

vue/no-unused-refs

报告从未在 <script> 中引用的模板 ref(ref="x")

错误示例

正确示例

分组示例 · 规则参考

vue/no-unused-setup-bindings

禁止从未读取的 script setup 绑定

错误示例

正确示例

分组示例 · 规则参考

vue/no-unused-vars

禁止 v-for 和 v-slot 指令中未使用的变量定义

错误示例

正确示例

分组示例 · 规则参考

vue/no-use-v-else-with-v-for

禁止在同一元素上使用 v-else-if 或 v-else 与 v-for

错误示例

正确示例

分组示例 · 规则参考

vue/no-use-v-if-with-v-for

禁止在同一元素上使用 v-if 与 v-for

错误示例

正确示例

分组示例 · 规则参考

vue/no-useless-mustaches

禁止表达式为常量字符串字面量的双花括号插值

错误示例

正确示例

分组示例 · 规则参考

vue/no-useless-template-attributes

禁止在 <template> 元素上使用不起作用的属性

错误示例

正确示例

分组示例 · 规则参考

vue/no-useless-v-bind

禁止值为普通字符串字面量的 v-bind

错误示例

正确示例

分组示例 · 规则参考

vue/no-v-for-template-key-on-child

禁止在 <template v-for> 的子节点上使用 key

错误示例

正确示例

分组示例 · 规则参考

vue/no-v-html

警告使用 v-html,以避免 XSS 漏洞

错误示例

正确示例

分组示例 · 规则参考

vue/no-v-text

禁止 v-text 指令,优先使用双花括号插值

错误示例

正确示例

分组示例 · 规则参考

vue/no-v-text-v-html-on-component

禁止在组件元素上使用 v-text / v-html

错误示例

正确示例

分组示例 · 规则参考

vue/permitted-contents

要求符合 HTML 内容模型规则

错误示例

正确示例

分组示例 · 规则参考

vue/prefer-props-shorthand

建议使用 props 简写语法(Vue 3.4+)

错误示例

正确示例

分组示例 · 规则参考

vue/prefer-true-attribute-shorthand

优先使用绑定到 true 的布尔属性简写

错误示例

正确示例

分组示例 · 规则参考

vue/prop-name-casing

规范所声明 prop 名称的大小写风格

错误示例

正确示例

分组示例 · 规则参考

vue/require-component-is

要求 <component> 元素具有 v-bind:is

错误示例

正确示例

分组示例 · 规则参考

vue/require-component-registration

要求显式导入或注册组件

错误示例

正确示例

分组示例 · 规则参考

vue/require-scoped-style

要求 style 标签具有 scoped 属性

错误示例

正确示例

分组示例 · 规则参考

vue/require-toggle-inside-transition

要求 <transition> 包裹的元素具有切换条件

错误示例

正确示例

分组示例 · 规则参考

vue/require-v-for-key

要求 v-for 指令搭配 v-bind:key

错误示例

正确示例

分组示例 · 规则参考

vue/scoped-event-names

建议使用 context:event 格式的作用域事件名称

错误示例

正确示例

分组示例 · 规则参考

vue/sfc-element-order

要求 SFC 顶层元素保持一致的顺序

错误示例

正确示例

分组示例 · 规则参考

vue/single-style-block

建议只使用一个 style 块

错误示例

正确示例

分组示例 · 规则参考

vue/slot-name-casing

要求通过 v-slot 使用的具名插槽采用 kebab-case

错误示例

正确示例

分组示例 · 规则参考

vue/this-in-template

禁止在模板表达式中使用 this.

错误示例

正确示例

分组示例 · 规则参考

vue/use-unique-element-ids

要求使用 useId() 生成唯一元素 ID,而不是静态字面量

错误示例

正确示例

分组示例 · 规则参考

vue/use-v-on-exact

存在带按键修饰符的处理器时,要求在 v-on 上使用 .exact

错误示例

正确示例

分组示例 · 规则参考

vue/v-bind-style

规范 v-bind 指令风格

错误示例

正确示例

分组示例 · 规则参考

vue/v-on-event-hyphenation

要求组件上 v-on 中的自定义事件名称使用连字符

错误示例

正确示例

分组示例 · 规则参考

vue/v-on-handler-style

要求 v-on 处理器写为方法引用或内联函数

错误示例

正确示例

分组示例 · 规则参考

vue/v-on-style

规范 v-on 指令风格

错误示例

正确示例

分组示例 · 规则参考

vue/v-slot-style

规范 v-slot 指令风格

错误示例

正确示例

分组示例 · 规则参考

vue/valid-attribute-name

要求属性名称有效

错误示例

正确示例

分组示例 · 规则参考

vue/valid-template-root

要求 <template> 根节点符合 Vue 3 片段语义

错误示例

正确示例

分组示例 · 规则参考

vue/valid-v-bind

要求 v-bind 指令有效

错误示例

正确示例

分组示例 · 规则参考

vue/valid-v-cloak

要求 v-cloak 指令有效

错误示例

正确示例

分组示例 · 规则参考

vue/valid-v-else

要求 v-else 指令有效

错误示例

正确示例

分组示例 · 规则参考

vue/valid-v-else-if

要求 v-else-if 指令有效

错误示例

正确示例

分组示例 · 规则参考

vue/valid-v-for

要求 v-for 指令有效

错误示例

正确示例

分组示例 · 规则参考

vue/valid-v-html

要求 v-html 指令有效

错误示例

正确示例

分组示例 · 规则参考

vue/valid-v-if

要求 v-if 指令有效

错误示例

正确示例

分组示例 · 规则参考

vue/valid-v-is

要求 v-is 指令有效

错误示例

正确示例

分组示例 · 规则参考

vue/valid-v-memo

要求 v-memo 指令有效

错误示例

正确示例

分组示例 · 规则参考

vue/valid-v-model

要求 v-model 指令有效

错误示例

正确示例

分组示例 · 规则参考

vue/valid-v-on

要求 v-on 指令有效

错误示例

正确示例

分组示例 · 规则参考

vue/valid-v-once

要求 v-once 指令有效

错误示例

正确示例

分组示例 · 规则参考

vue/valid-v-pre

要求 v-pre 指令有效

错误示例

正确示例

分组示例 · 规则参考

vue/valid-v-show

要求 v-show 指令有效

错误示例

正确示例

分组示例 · 规则参考

vue/valid-v-slot

要求 v-slot 指令有效

错误示例

正确示例

分组示例 · 规则参考

vue/valid-v-text

要求 v-text 指令有效

错误示例

正确示例

分组示例 · 规则参考

vue/warn-custom-block

警告 SFC 文件中的自定义块

错误示例

正确示例

分组示例 · 规则参考

vue/warn-custom-directive

警告需要注册的自定义指令

错误示例

正确示例

分组示例 · 规则参考