组件化是什么?
有人认为这是一种比较高大上的技术(因为大公司都在搞);但我觉得这样表达不太合适。
打个简单的比方,一个公司刚开始有几个人,大家可能分工也不那么明确,有事就商量着来。公司慢慢发展越来越大,出于管理的需要,公司会陆续成立多个部门,人员就会分散到各个部门中。
部门内部人的交流相对比较容易;随着公司的发展壮大,跨部门沟通会变得越来越困难。
那么这里的公司就相当于我们的项目;而公司的部门就相当于我们的组件,这里的人员就相当于我们的代码或者功能。
通过这个类比,我们很容易理解,组件化就是项目发展到一定规模时所必须经历的一个开发模式;
因此,组件化方案应该适合项目发展的实际需要去因地制宜,而不是独立于项目而存在的。
对于组件化来说,主要需要解决两大问题:
1. 组件的拆分
2.组件间的通信
关于组件化的实践,笔者也在探索中,目前只能给出一些自己的理解,大家可以看一下一些大厂输出的实践经验,应该比较有说服力。
对于iOS平台,私有cocoapods可能是承载组件的不错的选择(在笔者最早的项目实践中,各个组件被拆分成子工程输出.a静态库,集成到项目中)。
而组件间的通信,业界采用的比较多的方案是通过router(即模块注册url的方式)。我个人认为,router方案是一个比较稳妥的选择,但绝不是组件化通信的唯一方案。期待更多、更优秀的实践能够涌现出来。