vue项目规范以 Vue 官方规范(https://cn.vuejs.org/v2/style-guide/)中的A规范为基础
组件名应该始终是多个单词的,且命名规范为 KebabCase
格式
这样做可以避免跟现有的以及未来的 HTML 元素相冲突,因为所有的 HTML 元素名称都是单个单词的。
正例:
export default {
name: 'TodoItem',
...
}
反例:
export default {
name: 'Todo',
// ...
}
Vue.component('todo', {
// ...
})
正例:
my-component.vue
反例:
myComponent.vue
正例:
base-button.vue
反例:
MyButton.vue
父组件:todo-list.vue
正例:
todo-list-item.vue
todo-list-button.vue
反例:
todoItem.vue
程序员写好看的代码,不亚于写一行好看的字
好看的代码总是让人心旷神怡,
不好,不规范的代码,让人看了想说mmp,
那我们就来学习一下规范的代码怎么写的吧
以下来自B站的学习视频:前端必备-阿里大厂前端开发规范!
正例:
<MyComponent/>
<my-component>my-component>
反例:
<myComponent/>
data
必须是一个函数。正例:
// In a .vue file
export default {
data () {
return {
foo: 'bar'
}
}
}
反例:
export default {
data: {
foo: 'bar'
}
}
require
或者 default
,两者二选一validator
验证正例:
props: {
// 组件状态,用于控制组件的颜色
status: {
type: String,
required: true,
validator: function (value) {
return {
'succ',
'info',
'error'
}.indexOf(value) !== -1
}
}
}
写CSS样式时,加上 作用域 scope
正例:
.btn-close {
font-size: 16px;
}
正例:
组件模板中应该只包含简单的表达式,如果有复杂的表达式,应该使用计算属性或法
正例:
{{ normalizedFullName }}
// 复杂表达式已经移入一个计算属性
computed: {
normalizedFullName: function () {
return this.fullName.split(' ').map(function (word) {
return word[0].toUpperCase() + word.slice(1)
}).join(' ')
}
}
指令缩写 (用 :
表示 v-bind:
、用 @
表示 v-on:
和用 #
表示 v-slot:
) 应该要么都用要么都不用。
...
components --> props --> data --> computed --> watch --> filter --> 钩子函数 --> methods