这篇文章主要讲的是组件架构思想,不会讲具体的实现细节,看完你会对组件化有一个全面的了解!
为了方便理解,本文中组件=模块,组件化=模块化,统一以组件称呼
组件化作用:独立、重用 - 提高效率

组件拆分
拆分才是重中之中,很多人没理清组件的分解,我个人推荐把组件分为业务组件和功能组件

这样就清晰多了,那么我们的组件可以有哪些呢,下图我大概列了一下


组件的实现方式
1.cocoapods
每个组件都封装成一个个pod库,需要的直接引入,操作简单,但无法实时修改,如在项目中修改pod是无效的,要去pod修改后项目更新pod才有效,这样也保证了pod库的独立,对于频繁需要修改代码的pod,如业务组件,就建议不要用这个了,业务组件一般只有独立分离作用,无重用效果,弄成pod反而会增加开发成本,比如多版本并行开发,那git策略就会显得很繁琐
2.submodule
这种是利用git子模块来搭建组件,原本项目只有一个git项目,有了子模块后,子模块会有对应的版本项目,好处是一改编译运行即可,但操作比较繁琐(弃)
3.多个子项目(proj)
这种方式好处也是一改即改,可以立即编译运行,缺点是几乎不能重用,只起到一个独立作用(适合业务组件)

组建间的通信
网上有很多组件化的文章,在我看来,很多讲的其实是组件化之间的通信,如路由方案、target-action方案、BeeHive等等,这些其实都是关于组件如何通信,主要分静态调用和动态调用,还有动静结合
* 静态调用:
需要新增接口才可以调用,优点是不易出错,清晰明了,缺点是,要写代码
* 动态调用:
对一定的格式字符串进行分解,再使用运行时去调用对应的方法,优点是可配置,缺点是硬编码,不怎么清晰,统一出错
* 结合:就是有的静态有的动态
总结:
这些方案都是很好的解决方案,大家可以根据自己项目需要而做选择,这里不做详述~
本文从组件的拆分-实现-通信,来讲了组件化大致的内容,感谢观看~