可复用的组件
解决单一的、独立的、可复用的功能,因此这一点应该作为拆分一个组件的依据
如果一个组件内容涉及到的逻辑、实现的功能特别多,代码几千行,那么这个组件需要再拆分
例如:封装需要支持弹窗的排序组件,应该有三个文件:组件入口文件、排序组件、弹窗组件
vue
<template>
<div>
sort
</div>
</template>
文件命名
- 大驼峰命名:更方便,对于大小写不敏感的操作系统,涉及文件操作时可能有问题
- 全小写用横线分隔:没那么方便,但没有任何问题
template 部分
- 避免使用
id
- 避免复杂的逻辑计算,只负责读取数据和显示数据,应使用
computed
或methods
替代 - 避免行内样式
- 避免直接修改
dom
,例如样式的修改应动态控制class
或者style
达到效果 - 二次封装必须兼容原组件写法及用法,使用
v-bind="$attrs"
及v-on="$listeners"
v-for
必须要加key
v-for
和v-if
禁止写在同一个标签上/组件上v-if
和v-show
应根据实际渲染情况选择使用
script 部分
props
定义必须写type
和default / require
- 与视图渲染无关的数据结构避免放到
data
里 - 纯逻辑计算,应适当抽离或复用,避免全放到组件内部(例如:格式化时间、拷贝、格式化树结构等)
- 在能够被
babel
转成ES5
的前提下,语法用新不用旧- 避免不断
let _this = this
来在子层级获取实例,用箭头函数替代 - 对象的方法简写等
{ a: 1, getData () {} }
- ...
- 避免不断
- 禁止提交
debugger
及console
style 部分
style
标签必须要有scoped
属性,对于全局的样式应该有公用的css
- 样式复用:
css
变量、使用,
给不同的选择器定义同一批样式 - 属性尽量简写:
padding: 0px 2px
,而不是padding-left: 2px; padding-right: 2px;...
0