_this之外,避免以_与$作为非全局性变量与方法的开头或结尾===,避免使用==[强制] 在兄弟元素(同级元素)中,key的取值必须唯一
/* ✓ GOOD */
<div key="1"></div>
<div key="2"></div>
/* ✗ BAD */
<div key="1"></div>
<div key="1"></div>
[强制] 禁止使用静态的行内样式
<template>
<!-- ✓ GOOD -->
<div :style="styleObject"></div>
<div :style="{ backgroundImage: 'url('+img+')' }"></div>
<!-- ✗ BAD -->
<div style="color: pink;"></div>
<div :style="{ color: 'pink' }"></div>
<div :style="[ { color: 'pink' }, { 'font-size': '85%' } ]"></div>
<div :style="{ backgroundImage, color: 'pink' }"></div>
</template>
[强制] 同一组v-if与v-else-if彼此间的条件不可重复
[强制]v-if与v-for禁止在同一标签上使用
[强制]v-for需要指定key属性
key属性key属性应指定在template标签上v-if与v-else时,如果在一个分支上指定了key,那么其余分支也要手动指定key值,指定则全部指定[强制] 大括号风格 推荐使用 One True Brace Style
/* ✓ GOOD */
if (foo) {
bar()
} else {
baz()
}
/* ✗ BAD */
if (foo) {
bar()
}
else {
baz()
}
[强制] 空格 等号前后各一个空格,逗号后接一个空格
/* ✓ GOOD */
var foo = 1, bar = 2
/* ✗ BAD */
var foo = 1,bar = 2
var foo = 1 , bar = 2
var foo = 1 ,bar = 2
对象字面量的冒号和值之间存在一个空格
/* ✓ GOOD */
var obj = { 'foo': 'haha' }
/* ✗ BAD */
var obj = { 'foo' : 'haha' }
在操作符前后添加空格
/* ✓ GOOD */
var sum = 1 + 2
/* ✗ BAD */
var sum = 1+2
[推荐] 注释 功能复杂(暂定函数体5行以上)的函数、计算属性、监听器等需要添加注释,注释格式参照文档《前端编程规约——注释规范》
[强制] 选项顺序配置如下
"vue/order-in-components": ["error", {
"order": [
"name",
"model",
"components",
["directives", "filters"],
["props", "propsData"],
["provide", "inject"],
"emits",
"functional",
"mixins",
"data",
"computed",
"watch",
"watchQuery",
"beforeCreate",
"setup",
"created",
"beforeMount",
"mounted",
"activated",
"deactivated",
"beforeUpdate",
"updated",
"beforeUnmount",
"unmounted",
"errorCaptured",
"renderTracked",
"renderTriggered",
"methods",
["template", "render"],
"renderError"
]
}]
value,Vue3中优先命名为modelValue[强制] 在setup选项中禁止使用export(包括script setup语法糖)
[强制] 在setup的参数中禁止使用解构赋值
<script>
export default {
/* ✓ GOOD */
setup(props) {
}
}
</script>
<script>
export default {
/* ✗ BAD */
setup({ count }) {
}
}
</script>
[强制] 左括号与类名之间一个空格,冒号与属性值之间一个空格;逗号分隔的取值,逗号之后一个空格
// ✓ GOOD
.jdc {
width: 100%;
box-shadow: 1px 1px 1px #333, 2px 2px 2px #ccc;
}
// ✗ BAD
.jdc{
width:100%;
box-shadow: 1px 1px 1px #333,2px 2px 2px #ccc;
}
[强制] 不要为 0 指明单位
// ✓ GOOD
.jdc {
margin: 0 10px;
}
// ✗ BAD
.jdc {
margin: 0px 10px;
}
属性书写顺序
.jdc {
position: relative;
left: 0;
float: left;
display: block;
width: 100px;
height: 100px;
margin: 0 10px;
padding: 20px 0;
font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif;
color: #333;
background: rgba(0,0,0,.5);
-webkit-border-radius: 10px;
-moz-border-radius: 10px;
-o-border-radius: 10px;
-ms-border-radius: 10px;
border-radius: 10px;
}
CSS浏览器私有前缀 [推荐] CSS3 浏览器私有前缀在前,标准前缀在后
.jdc {
-webkit-border-radius: 10px;
border-radius: 10px;
}
[强制] class及id命名 id及className均使用kebab-case命名,id的命名必须唯一;一切选择器命名时须有确切语义,建议按照模块使用前缀;禁止使用令人困惑的缩写,某些固化的缩写除外,如**.nav**、.btn
[推荐] 慎用position与float,这两种属性会使元素脱离文档流的管理,可能带来不必要的额外工作
float,优先使用inline-block、flex等方式,在不脱离文档流的前提下完成布局