1、什么是组件化?
- 组件分以下几类:
- 独立业务模块:比如项目中的登录模块、设置模块、资源模块等。
- 不具备业务场景的功能模块:比如网络模块、相册模块、数据库模块等。
2、为什么要进行组件化?
- 随着项目的不断迭代,各个模块会越来越复杂,各个模块相互依赖,而且每个模块可能会有共同的业务逻辑,导致整个项目维护起来比较的麻烦。
- 可以采用组件化,把每个业务逻辑和模块分离,单独管理,这样比较方便维护,各个开发人员只需要关心自己的模块就好了。
3、组件化的好处:
- 分工更加明确、提高开发效率。
- 复用性更好,能迅速的组成更多的APP。
- 代码解耦
- 更容易测试、编译bug排除。
4、组件化方案
- 关键问题:解除
Mediator
(中间件)对各个组件的依赖。- 注册(路由、接口、协议) + 接口层(路由文档)
-
Runtime
反射调用:Class cls = NSClassFromString(@"XXX");
5、路由注册
- 优点:多平台通用
- 缺点:
- 没办法传递非常规范的参数(比如图片、方法)
- 需要维护一个路由文档
- 每个组件都要初始化,内存里需要保存一份表,组件多了就会有内存问题。
6、接口注册
- 有点:多平台通用
- 缺点:
- 它不是直接通过
Mediator
调用组件方法,而是通过Mediator
拿到组件对象,再自行去调用组件方法。 - 多了一个协议接口层,服务提供者必须依赖协议接口层。
- 它不是直接通过
7、经过组件化的项目示意图:
-
组件化前:
-
组件化后:
8、如何进行组件化?
- 使用
Cocoapods
管理组件化开发 -
podspec
:描述自己组件工程的代码目录和资源目录在哪,还有自己组件工程所依赖其他框架,到时候就会根据podspec
的指引去引入自己的仓库代码。