建议事项

以下描述只是针对大部分场景,特定场景特殊处理,不能一概而论。

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不一致,但一个项目中的风格肯定是一致的。
比如列表页,详情页等,所以需要定义项目级别的样式库,提供开发人员直接使用样式类,而无需每个页面都定义一套样式和布局。
提供参考页面是便于开发人员快速找到新开发页面的参照基准。
统一项目样式的好处还包括:

  1. UI改变,修改一处即可
  2. 样式兼容问题,修改一处即可。
  3. 无需开发人员重复定义样式和布局,开发提效。

6. 建议提供http请求尝试机制
主要是未了优化以下场景:

  • 提升弱网状态用户体验
  • 保证资源的最终下载完成
    尝试请求机制要按照尝试等待时间指数递增的方式,并设置最多尝试次数或最多尝试时间。

7. 点击事件要使用防抖函数