组件化

组件化

1.如何实现组件化
1)首先创建壳工程。
2)在壳工程内集成不同的功能模块以及业务模块。
3)使用cocoapods 管理各个模块。
4)使用JLRouter管理跳转。
5)使用runtime管理消息分发。
6)创建中间件,去管理A、B、C、D等不同组件之间的通信以及跳转。

2.组件化方案

  • 基于URL router接口方式
  • 基于protocol的方式
  • 基于Target-Action runtime调用方案
    URL router
    这种方案一般都是各个组件把自己可以提供的服务通过url的形式注册到一个中心管理器,然后调用发就可以通过openURL的方式来打开这个url,然后中心管理器解析这个url,把请求转发到相应的组件去执行
    优点:
    缺点:
    1.各组件需要提前注册(对外暴露的一些接口)
    2.url的参数传递受到限制,只能传递常规的字符串参数,无法传递非常规参数,如UIImage、NSData等类型。
    3.路由写错后编译没问题,而实现运行就出问题了,以后维护也不方便。
    4.内存中维护映射表。

protocol
优点:
1.解决了URL router接口方式无法传递非常规参数的问题。
2.协议方法未实现的话,会报编译警告。

缺点:
1.内存中维护映射表。
2.对组件协议需要注册,不注册就无法调用。

Target-Action
Target-Action方案利用了OC的runtime特性,无需注册,直接在原有的组件之外加一层wrapper,把对外提供的服务都抽离到该层。然后通过runtime的TARGET performSelector:ACTION withObject:PARAMS找到对应的组件,执行方法和传递参数。
优点:
1.内存中不需要维护映射表
2.不需要注册
缺点:
1.中间件实现繁琐。
2.中间件方法内部容易写错,写错后编译没问题,而实现运行就出问题了,以后维护也不方便。

3.组件化适用场景
团队规模相对比较大比如10人以上,业务线比较多比较独立,业务相对稳定,

你可能感兴趣的:(组件化)