前面有写到组件化方案的各个差异,在本章,我来谈谈自己对组件化架构的看法。
首先组件化的最大目的就是解耦合,易扩展。首先我们需要考虑的应该是如何将模块直接解耦,如何将模块细分。模块划分的原则要基于什么,这个要结合业务去拆分。
然后我们再次基础上搭建出容易维护和扩展的架构,即遵循SOLID以下五个原则。
- 单一功能原则
- 开闭原则
- 里氏替换原则
- 接口隔离原则
- 依赖反转原则
最后将拆分好的模块通过cocoapod 打包成库进行管理。
等等,这就结束了吗?当然还没完呢,在这里组件和组件之间的调用还是没有解耦,所以需要我们的组件化架构出场了,我们需要理清各个组件之间的依赖关系以及调用逻辑,划分层次。组件间的分层可以分为:
- 底层(基础组件)
- 中间层(通用的业务组件)
- 业务层
目前组件化的架构上主要分为 协议式Protocol Class
(蘑菇街方案)以及 中间者Target Action
(CTMediator)两种,在我看来前者可能适合侧重点在HTML上业务更多的团队。协议式最大的诟病就是缺乏统一的管理。而后者的优点体现在架构上容易管控,易扩展,所以更为推荐使用后者。
当然最终如何选择架构,目的都是解耦,使得项目更容易维护以及扩展新业务。很多人会上容易陷入迷茫,追求完美主义,追求理想中的解耦,在我看来组件化的解耦侧重点应该在于业务层相互直接的解耦,而不是形式上的,或者代码上的。