让团队代码像一个人写的

简介: 前端代码规范流程实践思路1. 本地开发过程,提示、校验、更改2. Git 提交过程,代码校验是否允许提交3. 服务端校验,代码校验是否合并和发布

前端代码规范


一千个读者,有一千个哈姆雷特

一千个程序员,就有一千种代码风格

由于个人喜好、习惯、编码风格各异,因此团队合作中需要统一规范


前端代码规范流程实践思路


  1. 本地开发过程,提示、校验、更改
  2. Git 提交过程,代码校验是否允许提交
  3. 服务端校验,代码校验是否合并和发布


一、开发者本地IDE统一


开发工具统一配置,智能实时提示


VS COde 为例, 安装 ESLintVetur 等扩展包

1bd3438290255f5d67fe7d7224200d98.png


规则设置


项目构建时 lint 规则可以继承优秀团队基于最佳实践设定的编码规范,如airbnb,  这样避免重复造轮子造成人力的资源浪费和规则覆盖的缺陷,继承社区知名代码规范后团队内部再进行细节调整


{
  "extend": ["airbnb-base"],
  "rules": {
    "semi": ["error", "never"]
  }
}


社区知名的代码规范


  • eslint-config-airbnb
    (https://github.com/airbnb/javascript)
  • eslint-config-standard
    (https://github.com/standard/eslint-config-standard)
  • eslint-config-alloy
    (https://github.com/AlloyTeam/eslint-config-alloy)


vue-cli3 脚手架初始化项目时规范选择


c8744d876972ef7b8bfcd837b7e4f7d1.png


可以设置部分 eslint rule 为警告,保障开发体验,并且在 pre-commitCI 中把警告视为不通过,保证严格的代码规范


二、 Git Hooks


团队合作中的编码规范有一点是,虽然自己有可能不舒服,但是不能让别人因为自己的代码而不舒服。


git 自身包含许多 hooks,在 commitpush 等 git 事件前后触发执行。与pre-commit hook 结合可以帮助校验 Lint,如果非通过代码规范则不允许提交。


husky 是一个使 git hooks 变得更简单的工具,只需要配置几行 package.json 就可以愉快的开始工作。


// package.json
{
  "scripts": {
    "lint": "eslint . --cache"
  },
  "husky": {
    "hooks": {
      "pre-commit": "npm lint",
    }
  }
}


git commit 过程拦截效果


image.gif32cafda7fd754552abfe7dd71a498697.png


注意:git hooks 的规范校验可以通过 git commit -n 跳过,需要在 CI 层继续加强校验


三、 CI/CD


git hooks 可以绕过,但 CI(持续集成) 是绝对绕不过的,因为它在服务端校验。使用 gitlab CI 做持续集成,配置文件 .gitlab-ci.yaml 如下所示


lint:
  stage: lint
  only:
    - /^feature\/.*$/
  script:
    - npm run test


GitLab pipelines 运行效果

image.gifd7be543c00228add1025a87166db8123.png

资料参考


常见的几种js代码规范工具

代码质量管理的开源平台Sonar


https://www.sonarqube.org/

前端代码规范(静态检查)工具


前端团队代码规范最佳实践

自动化代码规范工具


由浅入深定制你的代码规范与检查

ESLint

husky

githooks

GitLab Continuous Integration (CI)

GitLab CI/CD


目录
相关文章
|
前端开发 JavaScript Java
细说Sonar之——前端接入篇(上)
sonar是一个代码质量管理的开源平台,用于管理源代码的质量,通过插件形式,可以支持包括java、C#、JavaScript等二十余种编程语言的代码质量管理与检测。
|
Web App开发 JavaScript
Vue 项目中使用 debugger 在 chrome 谷歌浏览器中失效以及 console.log 指向去了 vue.js 代码
Vue 项目中使用 debugger 在 chrome 谷歌浏览器中失效以及 console.log 指向去了 vue.js 代码
1458 0
|
Web App开发 Android开发 iOS开发
iOS 调试:通过 Safari/Chrome 调试 WebView
iOS 调试:通过 Safari/Chrome 调试 WebView
8866 0
iOS 调试:通过 Safari/Chrome 调试 WebView
|
存储 安全 Java
Java修仙之路,十万字吐血整理全网最完整Java学习笔记(进阶篇)
本文是Java基础的进阶篇,对异常、集合、泛型、Java8新特性、I/O流等知识进行深入浅出的介绍,并附有对应的代码示例,重要的地方带有对性能、底层原理、源码的剖析。适合Java初学者。
Java修仙之路,十万字吐血整理全网最完整Java学习笔记(进阶篇)
|
存储 人工智能 文字识别
AI开发初体验:昇腾加持,OrangePi AIpro 开发板
本文分享了作者使用OrangePi AIpro开发板的初体验,详细介绍了开箱、硬件连接、AI程序开发环境搭建、以及通过Jupyter Lab运行AI程序的过程,并展示了文字识别、图像分类和卡通化等AI应用实例,表达了AI时代已经到来的观点。
2026 1
|
Linux API 图形学
OpenGL生态中的GL, GLU, GLUT, GLX, GLEW, GLEE和GLEXT详解
该文介绍了OpenGL生态系统中的关键组件,包括GL(基础绘图API)、GLU(提供辅助函数)、GLUT(窗口管理和事件处理)、GLX(X Window系统上的OpenGL扩展)、GLEW和GLEE(动态查询和封装OpenGL扩展)以及GLEXT(OpenGL扩展集合)。这些库和工具协同工作,帮助开发者构建跨平台的图形应用程序,提升兼容性与功能。理解它们的作用对优化OpenGL编程至关重要。
|
Devops 开发工具 数据安全/隐私保护
Docker Swarm总结+CI/CD Devops、gitlab、sonarqube以及harbor的安装集成配置(3/5)
Docker Swarm总结+CI/CD Devops、gitlab、sonarqube以及harbor的安装集成配置(3/5)
466 0
|
前端开发 JavaScript
rollup从0到1将react组件库打包发布npm
rollup从0到1将react组件库打包发布npm记录全过程
914 1
rollup从0到1将react组件库打包发布npm
|
开发工具 git
IDEA通过git回滚到某个提交节点或某个版本的操作方法
IDEA通过git回滚到某个提交节点或某个版本的操作方法
1524 0
|
资源调度 JavaScript 前端开发
使用Vite和TypeScript带你从零打造一个属于自己的Vue3组件库(上)
使用Vite和TypeScript带你从零打造一个属于自己的Vue3组件库(上)
918 0