iOS组件化之入门知识
组件化简介
什么是组件化,顾名思义,组件化就是将APP拆分成各个组件(也可以称之模块),同时解除这些组件之间的耦合,然后通过主工程将项目所需要的组件组合起来,因此常见的组件化方案大多都是使用cocoapods做依赖管理。
由于考虑到组件的代码结构,复用性等因素,项目中的组件拆分一般选择但不局限如下:
- 无业务基础组件
- 带业务基础组件
- 功能组件
- 业务模块组件
- 组件中间件
组件化架构的由来
随着移动互联网的不断发展,很多程序代码量和业务越来越多,现有架构已经不适合公司业务的发展速度了,很多都面临着重构的问题。
在公司项目开发中,如果项目比较小,普通的单工程+MVC架构就可以满足大多数需求了。但是像某宝、某猫、某东等这样的大型项目,原有的单工程架构就不足以满足架构需求了。
就拿淘宝来说,淘宝在13年开启的“All in 无线”战略中,就将阿里系大多数业务都加入到手机淘宝中,使客户端出现了业务的爆发。在这种情况下,单工程架构则已经远远不能满足现有业务需求了。所以在这种情况下,淘宝在13年开启了插件化架构的重构,后来在14年迎来了手机淘宝有史以来最大规模的重构,将其彻底重构为组件化架构。
组件化架构优缺点
优点列举
- 降低耦合。组件化抽取出来是一个业务单一独立的模块代码,可以直接用子工程进行管理的
- 组件开发,优化编译和运行时间,还可单独打包测试
- 组件化后项目的代码结构更加清晰,维护更加方便快捷
- 多人开发,代码管理更加简单,版本管理虽然增加困难,但各自负责维护模块,明确团队开发的业务边界,增加团队协作效率。
- 打造团队的编程默契,营造积极向上的气氛
缺点列举
- 前期需要很大的开发和业务拆分时间成本,根据公司目前的业务发展期适当来选择是否需要组件化。
- 代码建设需要很大的投入,模块拆分的耦合需要测试更加仔细。
- 版本同步问题,版本管理和集成管理有一定的难度。
专业博客请参考以下链接
- Casa Taloyum: iOS应用架构谈 组件化方案
- Limboy: 蘑菇街 App 的组件化之路
- Alibaba : BeeHive
- 有赞: 有赞组件化之路