亿级流量的 c 端项目。主体是多个小程序,并且分化为多个版本。除了扯皮拉扯之外,总想聊一聊,不吐不快。
因为各种原因,我们的技术栈百花齐放,uniapp,herbjs,内部小程序框架,vue(h5),react(h5),苦不堪言。对于新人进来,只能快速熟悉一块内容,熟悉其他的小程序需要重新学习框架,成本比较高,如果框架本身还出现一些bug,简直酸爽。
《少有人走的路》是本挺好的描述亲密关系的书,然而,技术上要小心。少有人选择的技术,那么就是坑多,因为部分业务是继承项目,所以框架沿用的原来的框架,没有文档,没有支持,吭哧吭哧,埋头苦干。没有人问,没有人解释,各种写法奇绝诡异。
再给我一次机会,我会毫不犹豫的选择使用熟悉的框架去重构,后续的维护成本会很低,对于长期项目,收益很高。
技术选型,选择大路货。虽然 v2ex 把 uniapp 喷的不要不要,然而开发效率,工程化,市场占有率,uniapp 是非常好的,能够让一般开发快速完成工作。
然而,uniapp 的 bug 也是有的,我们在开发过程中有遇到,我们选择给 uniapp 提交 mr,一般很快就会被合入。有人维护,有人讨论的技术,不用担心,一定可以找到比较快速的解决办法,没有就完善它,让它变得更美好。
见过太多的内部库,内部框架了,没有一个,是的没有一个,给我比较好的印象。
在我的项目里面,http 方法是比较核心的方法,初始状态下,有使用全局 http 的,也有直接使用 wx.request 方法的。后续做 token 校验的时候,困难重重,线上总是有大量的失效的 token。所以对所有 http 方法做了要求,全部使用我自己的库 @aocoding/mini-axios,集中处理token更新机制,后续异常逐渐降下来了。
很多按钮点击时候,需要用户高级授权,而高级授权又对应着判断是否已经授权,获取 code,和后端交互等复杂交互。
这里我们做了一个全局状态去存储授权,并封装成装饰器,按钮等行动点,可以直接使用装饰器去校验。进入页面时候,也可以使用装饰器去做一定的授权防御。
一般项目其实很难过度组件化,一个页面也就十几个组件。但是我接盘的一个项目,组件的划分匪夷所思。
这样的结果就是你需要在小程序里面跳来跳去,一个页面,组件应该有上百个….虽然业务确实比较复杂,但是咱真的至于这样么…