# vue-style-specification **Repository Path**: cj_vip/vue-style-specification ## Basic Information - **Project Name**: vue-style-specification - **Description**: 基于Vue2.0的前端开发规范 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-08-29 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # vue-style-specification 基于 Vue2.0 的前端开发规范 --- ### 一、Vue 组件部分 ##### 1、组件命名 组件名应该更倾向于完整单词而不是缩写 ###### 1.1、单文件名为多个单词 组件名应为多个英文单词的拼接(根组件 App.vue 除外),且为小驼峰命名方式;不能含有特殊字符、空格。 正例: ``` export default { name: 'associationAnalysis' } ``` 反例: ``` export default { name: 'Associationanalysis' } export default { name: 'associationanalysis' } ... ``` ###### 1.2、基础组件命名 应用特定的单个基础组件命名应该以特定的前缀开头,比如 Base、App、i、v 正例: ``` components/ |- baseButton.vue |- baseTable.vue |- baseIcon.vue ``` 反例 ``` components/ |- MyButton.vue |- VueTable.vue |- Icon.vue ``` ###### 1.3、单例组件名 单个活跃实例的组件应该以 The 前缀命名,以表示其唯一性。且该类组件应该和父类在同一文件夹并且具有独立的文件目录(如:component)或者以 _The + 父类组件名_ 的方式命名 ##### 2、组件数据 组件的 data 必须是一个函数。 当在组件中使用 data 属性的时候,它的值必须是返回一个对象的函数 正例: ``` export default { data () { return { name: 'bar' } } } ``` 反例: ``` export default { data: { name: 'bar' } } ``` ##### 3、Props 定义 Prop 子项的定义应该尽量详细,至少需要制定其类型,必要时且应该加上注释,方便调用 正例: ``` props: { list: { type: Array, required: true, default () { return [] } // prop:表头绑定的地段,label:表头名称,align:每列数据展示形式(left, center, right),width:列宽 } // 数据列表 } ``` 反例: ``` props: { list: {}, str: '' } ``` ##### 4、为 v-for 设置键值 更倾向于将 v-for 循环作用在 template 元素上, 正例: ``` ``` 反例: ``` ``` ##### 5、避免 v-if 和 v-for 用在一起 永远不要把 v-if 和 v-for 同时用在同一个元素上,这种情况下,如果想避免 dom 层级太深,template 元素就体现出价值了 正例: ``` ``` 反例 ``` ``` ##### 6、为组件样式设置作用域 对于应用来讲,顶级 App 组件和布局组件中的样式可以是全局的,但是其它所有组件应该是有作用域的,下面有几种方式: ###### 6.1、给样式添加 scoped,(适合独立功能模块的组件,不太建议使用这种模式) ``` ``` ###### 6.2、css 的 BEM 策略 _BEM 的意思就是块(block)、元素(element)、修饰符(modifier)_ ``` ``` ###### 6.3、为组件顶部 dom 元素添加修饰符 + less、scss 预处理语言进行嵌套(注意嵌套层级,最好不要超过 3 级) ``` ``` ##### 7、在模板中组件名采用小驼峰 正例: ``` import Nation from '../../../components/iEcharts/overViewTouristSourceAna' ``` 反例: ``` const ijiangsuMap = () => import('../../../components/iEcharts/JiangsuMapIndexFlow') ... ``` ##### 8、模板中的表达式 组件模板中应该只包含简单的表达式,复杂的表达式则应该重构为计算属性或者方法。 复杂表达式会让你的模板变得不那么声明式。我们应该尽量的描述此处出现什么,而不是如何计算得出的那个值。而且计算属性和方法使得代码可以重用。 正例: ``` {{ normalizedFullName }} // 复杂表达式已经移入一个计算属性 computed: { normalizedFullName: function () { return this.fullName.split(' ').map(function (word) { return word[0].toUpperCase() + word.slice(1) }).join(' ') } } ``` 反例: ``` {{ fullName.split(' ').map(function (word) { return word[0].toUpperCase() + word.slice(1) }).join(' ') }} ``` ##### 9、单文件组件的顶级元素的顺序 单文件组件应该总是让 ```