前端规范, 目的是代码风格统一, 方便维护
基础规范
1、代码需要增加注释, 复杂逻辑,需要添加注释
2、代码行数,单个 vue文件控制在 1000行,1000行不包括 css样式
目的: 代码量过大, 存在维护上的困难, 希望打击都能合理拆分组件
3、代码尽可能不要 隐式引用
例如: vue-plugin 里面引入了 lodash, 有些项目,不安装依赖, 直接使用 _.debounce, 这是有问题的, 也是坚决杜绝的
建议: 项目自行安装 lodash, dayjs, big.js 等公共流行库, 解决一些业务问题
4、资源释放问题
地图资源,在组件销毁时, 必须注意资源释放问题
定时器,也必须在组件销毁时释放, 避免内存泄露
5、剔除项目中未使用的代码, 方法
特别是在copy 别人代码的时候, 需要剔除掉未使用的代码
6、代码异常捕获, try catch
接口请求,都必须try ... catch
promise 必须 添加 catch
7、Promise 不要写成回调地狱
function getDetail() {
let arr = []
this.$api(xxx).then(res => {
this.$api2GetEnums().then(list => {
this.$api3().then(res3 => {
res.list.forEach(item => {
list.forEach(p => {
if(item.id === p.id) {
item.desc = p.typeName
}
arr.push(item)
})
// 等
res3.forEach(...)
})
})
})
})
}
async function getDetail() {
try {
// 接口不要写成回调地狱了
let api2GetEnums = await this.api2GetEnums()
let api3 = await this.api3()
let res1 = await this.api1()
// 数据处理
res1.list.forEach(item => {})
} catch(e) {
}
}
8、 接口不合理的,要及时和后端同学沟通, 优化接口数据返回
例如:本来一个接口能返回的,业务也比较简单, 非要做2个接口返回,就浪费了一次请求, 根据实际情况,建议后端同学做接口数据合并
vue规范
1、组件之间不要循环引用
例如: A 引用组件 B , B引用组件C , C引用组件A , 一般递归组件会存在循环引用, 需要注意结束条件
2、每个业务组件必须添加name字段, 比如当前业务是 paySend/index.vue, 则name为 paySend
原因: vue-devtool 可以快速检索我们的组件, 当出现报错, 也能提示对应的信息, 后续 监控接入到项目中, 也能友好提示是哪个组件出现报错
3、组件目录规范
不要把所有的业务组件,都丢到 src/ components里, 页面组件,都归类到【当前页面目录】的 components下
- src
- components 存放公共组件, 基础组件,通用组件等
- ...
- views
- APage
- components 存放和当前业务相关联的组件
- dialog.vue
- form.vue
- map.vue
- index.vue
- detail.vue
- BPage
- components
- index.vue
- detail.vue
4、项目文件命名规范
文件夹名, 已经包含了对当前业务的描述, 例如, about 页面, 不要过度命名, 遵循简约,见名知意
禁止案例
about
- aboutList.vue
- aboutDetail.vue
推荐
about
- index.vue
- detail.vue
5、项目中不必要的情况,可尽量减少 mixin
一般 mixin 会引入权限等全局的, 单纯一个业务, 一般不会采用 mixin,
mixin使用需要注意优先级问题
使用mixin 的文件,在调用方法,数据, 还需要注意数据来源
// 定义
export const mixin = {
data() {
return {
// 一份字典数据
payList: [
]
}
},
methods: {
findOneInList(id) {
return this.payList.find(item => item.id === id)
}
}
}
推荐为
const payList = [
{}
]
export const findOneInList = (id) => {
return payList.find(item => item.id === id)
}
在使用上, 更简洁, 数据来源更明确
6、简单业务, 竟可能少使用 vuex, 增加了项目的复杂度
一般业务 合理拆分和规划代码, 定义好组件之间约定的通讯方式, 即可
7、父组件禁止使用 ref 去 调用ref 去更改组件的内部数据状态
推荐: 采用 props 去调整组件状态
禁止 this.$refs['risk'].status = true
8、业务代码, 尽量少使用 jsx 方式, 采用 template 的方式
一切能用 jsx 实现的, template 都能实现
jsx 丢失了 vue语法糖特性, 增加代码维护成本, render是会执行2次
样式规范
1、 class 采用 中横线
合适: 'news-list'
不合适: ‘news_list’ 'newsList', 'NewsList'
2、样式嵌套,不易过深, 增加 css查找耗时
不建议:
.page-container {
.header {
.header-title {
.icon-container {
.icon-list {
.remove {
// 嵌套过深
}
}
}
}
}
}
gitlab 项目简介规范
gitlab 项目仓库, README 文件应该包含如下必要内容, 以帮助其他人能快速启动并熟悉项目
-
项目名称
-
相关链接
- gitlab仓库地址
- prd需求地址
- jenkins 地址
- 接口文档地址
-
环境说明
-
scripts脚本说明
-
当前项目的注意事项
-
git提交日志规范