iOS组件化(一)

1,461 阅读3分钟

1. 组件化介绍

在一个项目越来越大,开发人员越来越多的情况下,项目会遇到很多问题。

  • 业务模块间划分不清晰,模块之间耦合度很大,非常难维护。
  • 所有模块代码都编写在一个项目中,测试某个模块或功能,需要编译运行整个项目。

为了解决这些问题,就需要用到组件化。组件化的作用如下:

  • 模块间解耦
  • 模块重用
  • 提高团队协作开发效率
  • 单元测试

并不是所有的项目都需要组件化,如果:

  • 项目较小,模块间交互简单,耦合少
  • 模块没有被多个外部模块引用,只是一个单独的小模块
  • 模块不需要重用,代码也很少被修改
  • 团队规模很小

那么这些项目就不需要组件化。

组件化最重要的部分就是颗粒度的划分,划分的越精准,组件化的效果就越好。组件化颗粒度的划分不是越小越好,颗粒度太小会增加通讯的成本。 一般来说组件化分层分为三层:

  • 业务模块
  • 通用模块
  • 基础模块

这里一般从基础模块开始构建,然后构建通用模块,最后构建业务模块。

在这里插入图片描述

组件化需要注意以下几点:

  • 只能上层对下层依赖
  • 项目公共代码资源下沉
  • 横向的依赖 最好下沉

2. CocoaPods

平时我们是如何把远程代码拉到本地的呢?这里需要一个东西去找到远程代码——CocoaPods。这里以AFN为例,可以在CocoaPods找到AFN的文件,然后找到对应版本的json,并通过里面的信息来获得AFN

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

流程图:

在这里插入图片描述

3. 组件化操作

3.1 创建模块

Terminal中打开指定文件夹后输入 pod lib create 文件名生成一个模块, 创建好后会自动打开一个工程。

在这里插入图片描述

接下来打开这个模块,在这个模块的classes里面开始编写代码。

在这里插入图片描述

写好代码后,在进行一次pod install 操作,这样就可以看到之前创建的模块了。

在这里插入图片描述

3.2 第三方库和其他模块

如果文件依赖一些第三方库,那么就需要为其配置。

在这里插入图片描述

然后重新pod install

在这里插入图片描述

基础库也是一样的,但是需要在Podfile里面为其指定路径。

在这里插入图片描述

在这里插入图片描述

3.3 获取模块资源文件

如果需要用到其他模块的资源文件,那么就会找不到。那么要怎么做呢?

在这里插入图片描述

首先把要用到的图片放在对应模块的Assets里面。

在这里插入图片描述

然后在podspec里面添加resource_bundles后重新 pod install

在这里插入图片描述

然后就可以获取到相应的bundle获取图片。

在这里插入图片描述

获取json文件也是一样的。这里可以看到如果是正常的mainBundle获取就会有问题。

在这里插入图片描述

根据相应的bundle来获取json文件的话就没事了。

在这里插入图片描述