组件化实践

组件化大体思路
持续集成

框架说明:

  • 持续集成: 主工程(壳工程),包含所有内容,用于发布打包等
  • 基础组件: 不依赖其他任何组件,独立完成功能。主要有:与业务无法的功能(如string或data的加密,category的封装)对第三方库的封装(如AFNetworking,SDWebImage的封装)
  • 业务公用组件: 依赖基础组件或UIKit等系统组件,创建业务共同使用的功能(如分享,支付,网络访问)
  • 中间组件: 连接业务公用组件和业务组件,及业务组件之间的互相调用。(如Mediator的组件)
  • 业务组件:单独的业务功能,不依赖其他业务组件。

##基础组件:
没有业务场景 不允许依赖业务组件

###公共基础
多项目可用

###非公共基础
ProjectA依赖,但是ProjectB不依赖

桥接层

  • 桥接层的主要作用是为上层业务层和下层基础框架层做桥接,主要考虑底层业务层的开放接口变动频繁以及不适配上层业务。
  • 想要达到每个组件之间相对低耦合,比较常用的方案就是断掉横向依赖,使用中间人模式将依赖下沉至中间件,而且组件对中间件是单向依赖

##业务组件
业务之间不允许相互依赖

隐性依赖库 -> Podfile.lock

##过程

开源组件->基础组件->平台中间件->业务组件->壳工程

副作用:因为多库开发在发布与集成时 很多依赖冲突lock文件冲突

自动发版与自动集成

壳工程分离