Vue 代码风格指南

命名规范

统一使用短横线分隔的小写字母(kebab-case)命名规范

属于组件或类的,统一使用大驼峰(UpperCamelCase)命名规范

其他非组件或类的,统一使用小写字母开头的(kebab-case)命名规范

展开node_modules中的项目依赖,会发现几乎所有的项目文件夹命名都是 kebab-case命名的,使用kebab-case命名的文件

例:my-component.vue

vue/attributes-orderopen in new window

标签属性必须按规则排序

// bad
// good

vue/comment-directiveopen in new window

支持在模版中使用 eslint-disable-next-line 等注释

// bad
// good

vue/eqeqeqopen in new window

必须使用 === 或 !==,禁止使用 == 或 !=

// bad
<template>
  <div :attr="foo == 1"/>
</template>
// good
<template>
  <div :attr="foo === 1"/>
</template>

vue/jsx-uses-varsopen in new window

已定义的 jsx element 必须使用

// bad
// good

vue/no-async-in-computed-propertiesopen in new window

计算属性禁止包含异步方法

// bad
// good

vue/no-duplicate-attributesopen in new window

禁止出现重复的属性

// bad
// good

vue/no-parsing-erroropen in new window

禁止出现语法错误

// bad
<template>
  <div>{{ message. }}</div>
</template>
// good
<template>
  <div>{{ message }}</div>
</template>

vue/no-reserved-keysopen in new window

禁止覆盖保留字

// bad
// good

vue/no-textarea-mustacheopen in new window

禁止在 <textarea> 中出现 Mustache 语法

// bad
// good

vue/no-unused-componentsopen in new window

禁止定义在 components 中的组件未使用

// bad
// good

vue/no-unused-varsopen in new window

模版中已定义的变量必须使用

// bad
// good

vue/no-use-v-if-with-v-foropen in new window

禁止在同一个元素上使用 v-if 和 v-for 指令

// bad
// good

vue/order-in-componentsopen in new window

组件的属性必须为一定的顺序

// bad
// good

vue/require-component-isopen in new window

<component> 必须有 v-bind:is

// bad
// good

vue/require-default-propopen in new window

props 如果不是 required 的字段,必须有默认值

// bad
// good

vue/require-direct-exportopen in new window

禁止手动 export default

// bad
// good

vue/require-prop-type-constructoropen in new window

props 的取值必须是构造函数

// bad
// good

vue/require-render-returnopen in new window

render 函数必须有返回值

// bad
// good

vue/require-v-for-keyopen in new window

v-for 指令的元素必须有 v-bind:key

// bad
// good

vue/return-in-computed-propertyopen in new window

计算属性必须有返回值

// bad
// good

vue/this-in-templateopen in new window

禁止在模版中用 this

// bad
// good

vue/use-v-on-exactopen in new window

当一个节点上出现两个 v-on:click 时,其中一个必须为 exact

// bad
// good

vue/v-on-function-callopen in new window

禁止在 v-on 的值中调用函数

// bad
// good

vue/valid-template-rootopen in new window

template 的根节点必须合法

// bad
// good

vue/valid-v-bindopen in new window

v-bind 指令必须合法

// bad
<template>
  <div>
    <div v-bind></div>
    <div :aaa></div>
    <div v-bind:aaa.bbb="foo"></div>
  </div>
</template>
// good
<template>
  <div>
    <div v-bind="foo"></div>
    <div v-bind:aaa="foo"></div>
    <div :aaa="foo"></div>
    <div :aaa.prop="foo"></div>
  </div>
</template>

vue/valid-v-cloakopen in new window

v-cloak 指令必须合法

// bad
// good

vue/valid-v-elseopen in new window

v-else 指令必须合法

// bad
// good

vue/valid-v-else-ifopen in new window

v-else-if 指令必须合法

// bad
// good

vue/valid-v-foropen in new window

v-for 指令必须合法

// bad
// good

vue/valid-v-htmlopen in new window

v-html 指令必须合法

// bad
// good

vue/valid-v-ifopen in new window

v-if 指令必须合法

// bad
// good

vue/valid-v-modelopen in new window

v-model 指令必须合法

// bad
// good

vue/valid-v-onopen in new window

v-on 指令必须合法

// bad
// good

vue/valid-v-onceopen in new window

v-once 指令必须合法

// bad
// good

vue/valid-v-preopen in new window

v-pre 指令必须合法

// bad
// good

vue/valid-v-showopen in new window

v-show 指令必须合法

// bad
// good

vue/valid-v-textopen in new window

v-text 指令必须合法

// bad
// good