统一编码风格,命名规范,注释要求,在团队协作中输出可读性强,易维护,风格一致的代码
团队协作开发过程中,为了保证代码的可读性,避免因不同的代码编写习惯带来的不必要的编译错误,项目使用ESLint语法规则和代码风格检查工具来保证语法的正确性,统一代码风格。
1、安装 ESLint
npm i eslint -D
如果使用 @vue/cli 脚手架创建项目,创建过程中会有相关的安装提示。
2、.eslintrc.js 配置文件(定义规则)
在项目根目录下新建 .eslintrc.js 配置文件,如果全局安装了 eslint ,可以使用命令初始化该配置文件:
eslint --init
或者是手动新建 .eslintrc.js 配置文件。
3、.eslintignore 忽略文件
在项目根目录创建一个 .eslintignore 文件告诉 ESLint 去忽略特定的文件和目录。如:
build/*.js
src/assets
public
dist
eslint 总是忽略 /node_modules/* 和 /bower_components/* 中的文件
命名规范是每个团队都必须面临的问题,用固定的规范可以使得开发的效率得到提升、在交接和维护项目时降低投入的成本。在执行规范的同时,我们应该避免以下的命名现象出现:
以上的编码习惯无疑会使得代码维护起来的难度加大,在为文件、标识符进行命名的时候应尽量考虑语义化,使下一个开发者能够快速理解它们的含义
常规的文件夹/文件命名使用全小写形式,单词之间使用下划线 _ 连接:src、assets、activity_list
组件文件夹/文件命名使用大驼峰形式(名词):Coupon、CouponList
Tip: 在Vue、React中我们将页面文件也理解为页面级组件,所以请使用大驼峰的形式命名。
├── build # 构建相关
├── public # 静态资源
│ │── favicon.ico # favicon 图标
│ └── index.html # html 模板
├── src # 源代码
│ ├── api # 所有请求
│ ├── assets # 主题、字体等静态资源
│ ├── components # 全局公用组件
│ ├── icons # 项目所有 svg icons
│ ├── layout # 全局 layout
│ ├── router # 路由
│ ├── store # 全局 store 管理
│ ├── styles # 全局样式
│ ├── utils # 全局公用方法
│ ├── views # views 所有页面
│ ├── App.vue # 入口页面
│ ├── main.js # 入口文件 加载组件 初始化等
│ ├── permission.js # 权限管理
│ └── settings.js # 项目基本配置
├── .env.xxx # 环境变量配置
├── .eslintrc.js # eslint 配置项
├── .babelrc # babel-loader 配置
├── .travis.yml # 自动化CI配置
├── vue.config.js # vue-cli 配置
├── postcss.config.js # postcss 配置
└── package.json # package.json
├── PageName # 页面作为组件使用大驼峰的形式命名
│ │── components # 页面独有组件文件夹
│ └── index.vue # 页面文件
图片需要先为对应的业务性质创建文件夹进行存放,文件夹有效的避免同名文件冲突的问题,文件命名由两部分组成:性质_名称,当某一部分需要使用复合单词时,复合单词之间只用**横杠 - **连接:
样式的命名采用 BEM 规则,何为 BEM 呢?
规则:使用双下划线 __ 连接 B 与 E,用双横杠 – 连接 B 与 M 或 E 与 M,如果某一个部分是复合单词则单词之间以横杠 - 连接,示例如下:
常规单词
.nav
.nav__item
.nav–hover
.nav__item–hover
复合单词
.sub-nav
.sub-nav__item
.sub-nav–hover
.sub-nav__item–hover
修饰符 | 命名 |
---|---|
激活的 | active |
选中的 | selected |
默认的 | default |
反转的 | toggle |
禁用的 | disabled |
危险的 | danger |
警告的 | warning |
错误的 | error |
成功的 | success |
打开的 | open |
关闭的 | close |
前一个 | previous |
后一个 | next |
当 前 | current |
信 息 | info |
显 示 | show |
隐 藏 | hide |
大 | lg |
小 | sm |
特 小 | xs |
BEM 命名的规则讲究的是扁平化,而不是按着 DOM 的层级一直串街命名,所以请不要出现 B__E__E__E 的情况,每个独立的命名永远都是由 B__E–M 三级组成的。
块的内部允许存在其他的块(B),不要因为有包含关系就把所有 DOM 认定为元素(E),只要功能完整可以迁移到任何位置我们都可以认为它是一个新的块。包含关系不一定就需要强制应用 B__E 的规则。例如:header 中包含 logo 和 nav,此时 logo 和 nav 就可以单独命名。
团队协作开发过程中,为了保证代码的可读性,关键代码处请注释相关的说明。
1、template 结构内容注释
(1)大区块之间需要回车换行,且有单独的中文注释
2、style 注释
(1)每个大区块的样式的需要有单独的中文注释
(2)每个大区块样式之间需要回车换行
(3)在自定义函数库文件中需要对每个语言函数进行单独的批注,或者一些功能类似的语言函数可以根据功能分类注释
3、script 注释
(1)尽可能多用单行注释,注释需要与被注释的地方对齐
(2)生命周期 created()、mounted() 下的所有方法调用需要单独注释,methods 里面涉及接口调用的方法一定要注释,filters 里面的过滤器需要注释说明功能
此规范仅作为参考,如果觉得对你有所帮助,还请点赞支持一下,在此感谢了!