helios741 / myblog

觉得好请点小星星,欢迎有问题交流(issue/email)
109 stars 21 forks source link

需要去思考的问题(持续更新) #23

Open helios741 opened 6 years ago

helios741 commented 6 years ago

在工程中做了统一的接口错误处理,但是遇到特殊情况怎么办?

因为现在在项目中使用的是axios,通过axiosdisplayNotification会把所有的请求失败的接口统一处理,现在的统一错误处理是只要是错误就出现个弹窗把后端返回的错误显示给前端。但是也是会有特殊情况,在登陆的时候当用户名和密码出现错误的时候,一般在输入框的周围出现红色文字提示,但是如果使用统一的错误处理话还是会出现弹窗,这样对于交互或者体验来说是很不好的,现在的做法:因为这种情况比较特殊,所以就通过判断后端返回回来的错误信息,这个场景就不进行出现弹窗

但是项目中难免会出现一些奇葩或者历史遗留性问题,有的接口默认返回的都是200,那个开发者觉得只要这个请求请求到服务器了就是成功就应该返回200,但是把具体的错误有进一步的包了一下,但是这个请求除了404意外都是200,所有就不会走到上面所说的displayNotification里面,所以这种情况的做法:就要使用axiosinterceptors对每个请求的响应进行特殊的判断

公用模块频繁升级版本

在当前的业务中,不同的业务线是分为不同的repo的,这样做是有很多好处的:

  1. 不同的业务线之间不会相互影响
  2. 不同的业务线采用的架构发生变化,不用一起商量
  3. 把各个业务的公用模块打成一个包,单独维护。(比如说统一鉴权的逻辑)

还是有坏处的:

  1. 在引入公用模块的时候,按照规范来说是不应该出现样式重叠的,但是公用模块如果依赖normalize.css等有全局的东西话就可能会遇到问题。比如现在遇到的问题是:公用模块的样式中有一个* {box-sizing: border-box}但是有的模块是不依赖这个的,就会出现问题:
  1. 共有模块在bugfix的时候导致各个业务模块频繁升级。

底层依赖的component有bug

现在的场景是这样的:

并且内部的lamma-uiapollo-weights已经稳定使用了很长时间了,突然有一天发现了rc-component中的某一个组件的bug(比如说: rc-select),并且这个bug是block的会影响产品展示形态。