组件化

1、什么是组件化?

  • 组件分以下几类:
    • 独立业务模块:比如项目中的登录模块、设置模块、资源模块等。
    • 不具备业务场景的功能模块:比如网络模块、相册模块、数据库模块等。

2、为什么要进行组件化?

  • 随着项目的不断迭代,各个模块会越来越复杂,各个模块相互依赖,而且每个模块可能会有共同的业务逻辑,导致整个项目维护起来比较的麻烦。
  • 可以采用组件化,把每个业务逻辑和模块分离,单独管理,这样比较方便维护,各个开发人员只需要关心自己的模块就好了。

3、组件化的好处:

  • 分工更加明确、提高开发效率。
  • 复用性更好,能迅速的组成更多的APP。
  • 代码解耦
  • 更容易测试、编译bug排除。

4、组件化方案

  • 关键问题:解除Mediator(中间件)对各个组件的依赖。
    • 注册(路由、接口、协议) + 接口层(路由文档)
    • Runtime反射调用:
           Class cls = NSClassFromString(@"XXX");
      

5、路由注册

  • 优点:多平台通用
  • 缺点:
    • 没办法传递非常规范的参数(比如图片、方法)
    • 需要维护一个路由文档
    • 每个组件都要初始化,内存里需要保存一份表,组件多了就会有内存问题。

6、接口注册

  • 有点:多平台通用
  • 缺点:
    • 它不是直接通过Mediator调用组件方法,而是通过Mediator拿到组件对象,再自行去调用组件方法。
    • 多了一个协议接口层,服务提供者必须依赖协议接口层。

7、经过组件化的项目示意图:

  • 组件化前:


    Snip20180311_9.png
  • 组件化后:


    Snip20180311_10.png

8、如何进行组件化?

  • 使用Cocoapods管理组件化开发
  • podspec:描述自己组件工程的代码目录和资源目录在哪,还有自己组件工程所依赖其他框架,到时候就会根据podspec的指引去引入自己的仓库代码。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容