- 小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
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文件的话就没事了。