是什么?
组件化就是将一个单一的工程分解为各个组件,然后按照某种方式任意组织成为一个拥有完整业务逻辑的工程.
为什么有组件化?
1.解决高度耦合的问题,出一个bug会带出别的bug,
2.测试不独立,一个bug可能会影响整个app不能测.
3.xib等影响编译时间,可以使用静态库打包,但是不能保证没有依赖
4.设计模式冲突,不同组件之间可以使用不同的设计模式.
优势是什么?
1.组件之间相互独立, 节约编译时间,降低耦合性
2.资源重用
3.高效迭代,节约测试,开发的时间
4.加快编译速度
正题
- 组件的划分
- 基础组件 :基础配置(宏,常量),分类,网络层封装.工具类(日期时间的处理,文件处理,设备处理)
为什么需要网络封装:因为加入需要替换AFN,则只需要改变二次封装的代码,不需要改变业务代码的请求.
2. 功能组件:控件(ui,弹幕,轮播器,选项卡);功能(断电续传,音频处理)
3. 业务组件:各个业务线.
- 组件之间的关系
- 基础组件和功能组件是同层组件,不能产生依赖关系.
- 同类型组件内部之间,也不能产生依赖关系.功能组件之间的不能依赖.
- 业务组件依赖于基础和功能组件
- 组件之间的通信
- 同层次或同类之间的组件
1️⃣通过中间件传递,互相之间引用属性或方法,都通过中间件要.
- 组件化的难点--解耦
- 组件内部依赖其他组件的公共功能,(用copy?这么low吗)
- 组件内部使用外部服务通过代理或block或中间件解耦(??????????/)使用场景:更换第三方框架.
- 组件化的方式
- pod 私有库
- 子工程,子工程之间相互import 使用import "../组件01/组件01/Person.h"
没有分开的,会越来也慢
3. framework的方式:没有pods好管理.