最近在学习组件化的一些方案。这里收集消化了一下,分享给大家参考。
组件化是架构层面的一个概念,它把项目按照某些规则(比如:按功能、按业务)划分成若干个颗粒度较小的单位,我们把这些单位称之为组件,或者是模块,来达到优化项目结构的目的。
组件又可以细分为 功能组件(如:图片库,网络库),业务组件也叫模块(如:订单模块,个人中心模块)
功能组件主要是物理层面的拆分,方便以后的复用
业务组件强调逻辑拆分,以便解耦
组件化的发展历程
开发之初,在功能方面,我们会把项目划分为基础层、网络层、数据层等等,而业务层面,仅仅是按照目录结构做一个简单的模块分层,比如订单模块、个人中心模块
注:因为功能组件被大部分业务模块所依赖,这里暂时不讨论功能模块的架构问题。
随着业务的发展,项目变的越来越复杂,APP
内各个业务之间的耦合严重,边界越来越模糊,经常会出现你中有我,我中有你的情况,如图
可以看到,模块与模块严重耦合,对代码的扩展,以及代码的开发效率造成了巨大影响,有一种改一处动全身的感觉。发展到这个阶段,我们会把各个模块分割开来,通过中介者来完成不同模块之间的交互。如图
这个时候,架构看起来是清晰了许多。但因为中介者任然反向依赖业务模块,任然存在改一处多个模块受影响的情况,依赖仍旧是双向的。我们举个例子:
假如我现在在会员模块,要跳入到商品模块,此时,会员模块需要通过中介者来完成跳转