建议事项
以下描述只是针对大部分场景,特定场景特殊处理,不能一概而论。
1. 不做多余的http请求 (前端)
- 请求修改状态等完毕后,响应200后则可前端可直接更改前端数据,避免再次发送请求数据反显。(会多发一次报文)
2. 不返回多余的数据(后端)
根据实际情况酌情分离。
- 比如:只需要个人信息中的name,title,却返回了全部详情数据。
解决方案主要是使用功能GraphQL等 - 比如:新增,更新接口后返回的全量的更新数据。
这类接口后台可以返回成功与否即可。
3. 枚举类型要定义
对于类型要多使用枚举,而不是判断 0,1,2。
判断0,1,2,当修改时很容易遗漏或者改错
多参考《代码整洁之道》
(TODO:提炼出主要章节在此说明)
4. 异常建议不要再axios中拦截抛出异常
原因:某些returncode不属于错误,属于业务场景需要做业务处理。
不在axios中统一处理,难道每个方法都编写try{}catch{}吗?
建议:编写公共方法,如下:
- 针对需要根据returncode进行业务处理的,则自行使用try{}catch{}处理
- 也可实现装饰类标记在方法上
此方式有待完善
function tryCatchWrapper(fn){
try{
fn&&fn()
}catch(err){
//做统一的错误提示处理。
}
}
await function tryCatchWrapperPromise(fnPromise){
try{
await fnPromise&&fnPromise()
//暂未验证
// Promise.resolve(fn).(res=>{
// return res
// }).catch(err=>{
// //做统一的错误提示处理。
// })
}catch(err){
//做统一的错误提示处理。
}
}
5. 项目要定义自己的样式库和提供参考页面
每个项目的UI不一致,但一个项目中的风格肯定是一致的。
比如列表页,详情页等,所以需要定义项目级别的样式库,提供开发人员直接使用样式类,而无需每个页面都定义一套样式和布局。
提供参考页面是便于开发人员快速找到新开发页面的参照基准。
统一项目样式的好处还包括:
- UI改变,修改一处即可
- 样式兼容问题,修改一处即可。
- 无需开发人员重复定义样式和布局,开发提效。
6. 建议提供http请求尝试机制
主要是未了优化以下场景:
- 提升弱网状态用户体验
- 保证资源的最终下载完成
尝试请求机制要按照尝试等待时间指数递增的方式,并设置最多尝试次数或最多尝试时间。
7. 点击事件要使用防抖函数
8. 支持TypeScript的项目 API的参数要定义类型
userLogin(data: { username: string; password: string }) {
return Http({ method: 'POST', data, url: Gateway_NTK + '/user/login' })
},
9. 使用对象属性时,尽量避免使用解构。 因为 const obj={name:'名称'}; 使用获取name属性 { name }=obj;
const obj={name:'名称'};
const { name }=obj; //使用解构时,当obj=null/undefined时,则js就会报错。
10. 引入资源Icon时,尽量使用svg格式的, 图片如果UI可以导出 svg,也优先使用svg,只有图片的图片上传到cdn(可图片发给我,我给大家上传)
11. Typescript定义静态类,注意事项
class util{
//Typescript中写静态类不要采用 箭头函数方式定义。
//此种方式定义,会导致局域网手机端访问dev的host地址白屏,也就导致无法手机访问url调试。
//原因:因为vite dev模式是module方式,此种方式无法按照useDefineForClassFields方式转换。
static sum = (a:number,b:number) => {
return a+b
}
//定义静态类要采用这种方式!,不要采用兼容函数。
static sum(a:number,b:number) {
return a+b
}
}