App组件化

2020-04-24  本文已影响0人  天青Se等烟雨
WX20200424-185221.png

优点

  • 业务分层、解耦,使代码变得可维护;
  • 有效的拆分、组织日益庞大的工程代码,使工程目录变得可维护;
  • 便于各业务功能拆分、抽离,实现真正的功能复用;
  • 业务隔离,跨团队开发代码控制和版本风险控制的实现;
  • 模块化对代码的封装性、合理性都有一定的要求,提升开发同学的设计能力;
  • 在维护好各级组件的情况下,随意组合满足不同客户需求;(只需要将之前的多个业务组件模块在新的主App中进行组装即可快速迭代出下一个全新App)

要求

  • 需要一定编码基础
  • 公用的工具类最好统一管理,节省资源,避免不必要的功能大同小异的类
  • 需要合理拆分模块,规划模块,以及相关之间的业务关系

组件化解耦

  • 分层

基础功能组件:按功能分库,不涉及产品业务需求,跟库Library类似,通过良好的接口拱上层业务组件调用;不写入产品定制逻辑,通过扩展接口完成定制;

基础UI组件:各个业务模块依赖使用,但需要保持好定制扩展的设计

业务组件:业务功能间相对独立,相互间没有Model共享的依赖;业务之间的页面调用只能通过UIBus进行跳转;业务之间的逻辑Action调用只能通过服务提供;

  • 中间件

方案比较

Router、 CTMediator

Router的缺点:

  • 在组件化的实施过程中,注册URL并不是充分必要条件。组件是不需要向组件管理器注册URL的,注册了URL之后,会造成不必要的内存常驻。
  • 维护成本,维护路由。各种路由的添加,以及添加时候的不规范会导致产生一些过时不用的,以及功能重复的路由的产生
  • 参数的传递,个人认为这个到还好,毕竟MGJRouter等其他三方路由方案都已经支持传参数,以字典携带需要的参数传递

Router的优点:

  • 方便统一化处理,由服务器统一配置,做到安卓和IOS的统一。
  • 跳转的时候不用依赖具体的目标类
  • 从外部(web或者其它app,推送等)打开App指定页面。

CTMediator的优点:

  • 调用时,区分了本地应用调用和远程应用调用。本地应用调用为远程应用调用提供服务。组件仅通过Action暴露可调用接口,模块与模块之间的接口被固化在了Target-Action这一层,避免了实施组件化的改造过程中,对Business的侵入,同时也提高了组件化接口的可维护性。
  • 由于是利用Runtime,不需要注册URL,不需要常驻内存。个人觉得是这个是主要优点

CTMediator的缺点:

  • 安卓 IOS 统一较困难?由于没有进一步使用不太清楚 欢迎补充。

一些别人写Router 地址:

上一篇 下一篇

猜你喜欢

热点阅读