协作规范
一、UI协作规范
- 统一工具
- 确定图标icon(推荐iconfont 或 图片)
- 明确尺寸边界(最小宽度、最大宽度)
- 明确内容边界(文字换行)
- 明确交互UI变化效果(鼠标形状、颜色值、阴影、loading、空数据提示等)
二、前后端协作规范
- 需求分析,技术难点讨论
- 确认接口公共参数、cookie、响应数据格式(如code、分页、msg提示等)
- 梳理数据来源
- 数据模型确认(前端交互所需要的数据是否齐全),输出mock数据模型
- 输出接口文档、参数说明、标记必传标识
- 联调前,接口做好充分自测
- 接口数据对接联调
流程规范
三、新建项目规范
- 项目md说明文件(开发说明、构建说明等)
- 项目源码放入src中
- 不需要打包的文件放入static中
- 一些配置文件放入config中
- 说明文档放入docs中
- 构建文件输出到dist中
四、技术选型规范
- 语言选择(js or ts)
- 包管理(npm or yarn)
- UI框架选择
- 路由、状态器、动画库、脚手架、组件库、SSR/CSR等
- 时间处理
- 工具库函数
- 开发/调试工具
五、GIT规范
- 明确分支类型,线上分支(master)、测试分支(test)、开发分支(dev)、热修复分支(hotfix)
- 分支管理流程:几年前画了图,丢了,只能脑补·····
- 明确分支命名方式:[分支类型]-[版本号]-[用户名]
- 设置分支权限,受保护分支
- 合并代码需提交marge request
- tag规范:[分支名]-[发版日期]-[版本号],备注发版内容
六、包管理规范
七、灰度规范
八、发布规范
九、私有化规范
开发规范
十、代码风格规范
- JS,遵循Airbnb规范(Airbnb JavaScript Style Guide_BurningMyself的博客-优快云博客)、推荐ESLint (ESLint简介_chengqiuming的博客-优快云博客_eslint)
- CSS,遵循BEM规范(CSS中什么是BEM 命名规范? - DIVCSS5)、(Stylelint的使用_火鸡面多放火鸡的博客-优快云博客_stylelint)
- HTML,推荐HTMLHint (前端代码检查工具之HTMLHint使用指南_guocongcong-cc的博客-优快云博客_htmlhint)
- 代码格式化,Prettier (Prettier首页、文档和下载 - 前端代码格式化工具 - OSCHINA - 中文开源技术交流社区)
- Vue组件文档,Vue Styleguidist (使用Vue Styleguidist编写组件文档 - 简书)
- codereview提交时 或 定时,(Code Review最佳实践_seven豆的博客-优快云博客_code review 最佳实践)
- 注释占福20%以上,文件注释(文件开头位置)、函数头部注释(参数、作用、返回值)、边写代码边注释
- 变量、常量、分支语句必须加上注释
- 注释格式统一,“/*...........*/”
十一、代码提交规范
- 格式:[type 类型]: [(scoped 影响范围)] [message 描述]
- type:
- feat:新功能的开发
- fix:bug的修复
- style:代码格式改变
- test:增加测试(调试)
- docs:文档格式的改动
- perf:性能优化
- build:改变了build工具
- chore:构建过程或辅助工具的变动
- refactor:对已有的功能进行重构
- revert:撤销上一次的commit提交
- scoped: 响应范围:如登录模块、权限模块
- message: 提交的简短说明
- 例如:fix:(登录页面表单)添加缺少的图标
十二、命名规范
- 统一编码格式:UTF-8
- 遵循语义化,避免出现a, abc, cao, a10086等命名方式
- 变量:小驼峰
- 类、构造函数:大驼峰
- 常量:全大写,下划线连接
- 私有变量、私有常量、私有函数:下划线开头
- 函数方法:动宾结构,动词+宾语(如:get/set + 宾语,is/has + 宾语,open/close + 宾语......)
十四、安全规范
- 访问外部对象时,做好判空判断
- 功能失效时,相关代码删除,防止意外恢复
- 注释中不能包含开发人员信息
- 客户端对外部的输入校验
- 禁止对外部数据,使用evel函数
- 禁止对外部数据,直接序列化
- 外部提供的数据,禁止直接数据组装(比如组装成json对象、数组等)
- 禁止在localStorage中存储敏感数据
十五、图片规范
- img标签不推荐设置width、height属性,推荐写上alt属性
- css中图片地址必须加上引号
- 更新频率低、使用频率高的小图建议合并成雪碧图
- 确保将要合并的小图片 与 合并后的雪碧图尺寸皆为偶数
- 图片小于2k,更新频率高,非移动端、IE7以下,建议使用base64
十六、组件规范(以vue组件为例)
- mixins放在最前面醒目位置
- props必须添加注释,是否必传、是否默认值、数据类型
- data、computed、watch依次编写
- 生命周期书写顺序,遵循组件的生命周期顺序
- methods放最后
监控规范
十七、埋点规范
十八、性能监控规范
十九、异常监控规范