# 开发规范

# 命名规范

  1. 属性方法名类名及文件名应有意义,建议不要使用单词的简写
  2. 模块的主入口文件应命名为 index.[js,ts,vue]等,子页面放在模块内components目录下
  3. js 属性名,方法名应使用驼峰命名法
  4. 类名使用大驼峰命名法
  5. 常量全部使用大写,单词之间使用下划线分割
  6. 样式使用bem命名法,样式名应全部小写
  7. 文件使用中划线命名法,单词之间使用中划线分割,名称中不能出现大写字母
  8. 所有绑定事件的方法应统一前缀on或handle,所有后端拉取数据的方法应统一前缀 get

# 代码规范

  1. 对重复使用两次以上的代码应提取成公共方法或组件
  2. 避免使用“魔数”,代码中所有关于状态类型的值应该常量化,并添加注释
  3. 对通用的样式进行提取,对私有代码需要私有化,如使用vue的scope,CSS Modules,单独命名空间等
  4. 通用组件应避免与业务紧密结合,提升组件的可复用性
  5. 尽量使用 async await代替Promise,使用async await需要使用trycatch捕获异常
  6. 考虑对页面级别的异常进行统一包装处理,业务代码只注重业务逻辑
  7. 避免在jsx或模板中出现复杂逻辑,嵌套逻辑等
  8. 模块应提供统一的出口文件,如Vue的components应提供index.vue统一输入所有组件

# 静态资源规范

  1. 对一般不会修改的图片,插件,组件库等使用cdn
  2. 对于小图标建议使用 svg或 文字图标,与UI达成共识
  3. 静态资源使用缓存,服务器端使用gzip进行压缩
  4. 使用webP代替png图片

# 样式规范

  1. 尽可能使用低优先级的选择器
  2. 避免使用!important
  3. 组件样式应方便按需修改,对关键样式可暴露对外属性进行配置
  4. 对常用色彩值,尺寸等建议用常量进行定义
  5. 样式写法采用bem规范,eg:page-btn__prev
  6. 覆盖样式

# Vue必要规范

  1. 组件名为多个单词
  2. 组件data必须是一个函数,他的返回值必须是一个对象
  3. prop定义应该尽量详细,提供默认值及类型要求
  4. v-for必须设置key,key应该是不重复
  5. 避免v-if和v-for用在一起,可对数据进行filter之后再遍历
  6. 为组件私有样式设置作用域
  7. 和父组件紧密耦合的子组件应该以父组件名作为前缀命名,如table与table-item
  8. 多个属性应该分行撰写