组件化开发前景随笔
随着企业项目的功能不断的扩展,不管是项目的测试还是项目的编译都会遇到很大的问题,编译时间过长,测试不灵活,耦合度高.所以组件化开发变得很有必要.
准备工作
1.安装好Xcode;
2.配置好cocoa pods;
3.有git托管的私有库.
拆分流程
1.创建远程私有索引库,即私有的specs repo .(这里解释一下索引库:我们开发中常用的比如AFN, SDWebImage...等,这些都是开源的库,我们是通过cocoapods官方的索引库来检索的,私有索引库则规定项目成员,或者有权限的人有权限访问).
1.1创建私有的远程索引库步骤(这里以国内的码市(托管平台为例))
![](https://img.haomeiwen.com/i2801130/54f1e294cdd9fe17.png)
1.2找到远程所有的地址(这里可以通过https访问也可以通过ssl,不在一一描述)
![](https://img.haomeiwen.com/i2801130/001c5638ca70d7e8.png)
2.添加repo到本地(本地索引库)
![](https://img.haomeiwen.com/i2801130/bad69170c189df65.png)
2.1添加本地私有索引库的步骤
![](https://img.haomeiwen.com/i2801130/4d3ab9b2859e41a0.png)
这里我们通过可以
pod repo help
命令看到pod repo add
的命令
2.2添加本地索引库
pod repo add xxxSpecs https://git.coding.net/xxxxx/xxxxxSpecs.git
![](https://img.haomeiwen.com/i2801130/77846137fb51775a.png)
2.3验证本地私有索引库的创建是否成功
pod repo
![](https://img.haomeiwen.com/i2801130/3f6b3a8ab48221df.png)
当出现2个repo,你创建的本地私有索引库则创建成功.
3.创建pod工程
3.1pod Lib create xxxx
xxxx代表你要创建的pod工程名字
这个命令会从官方获取一个空的pod工程的模板
![](https://img.haomeiwen.com/i2801130/a6a24720991cf3bb.png)
3.2这时候会生成一个空的模板工程
![](https://img.haomeiwen.com/i2801130/d18b2d06746db0e8.png)
![](https://img.haomeiwen.com/i2801130/7cf35e3d2d61340f.png)
3.3
![](https://img.haomeiwen.com/i2801130/eee9d3afcf6a6b66.png)
这时候模板功能里面就出现了我们写的基本分类
![](https://img.haomeiwen.com/i2801130/478990dcc84f7dc4.png)
4.把我们写的库托管到远程代码仓库
4.1创建远程的仓库(步骤同上述获取到远程地址)
4.2这时候需要改模板工程里面的.podSpecs
文件
![](https://img.haomeiwen.com/i2801130/0355deee12c2e17c.png)
4.3将写好的库同步到远程
![](https://img.haomeiwen.com/i2801130/b2335e5c94ee88c3.png)
![](https://img.haomeiwen.com/i2801130/c47e75e270ea819c.png)
4.4远程私有索引库需要版本控制信息,这里需要打tag
git tag '0.1.0'
打上tag
git push --tags
将tag提交到远程仓库
5.向本地私有索引库提交.podspec
git repo push xxxxxx(本地私有私有库的名称) xxxx.podspces(本地模板工程的.podspec)
注意这一步,它会先向本地私有索引库提交.podspec然后自动向远程私有索引库提交 .podspec
6.验证私有库的创建是否成功
pod search xxxx(我们创建私有库的名称)
![](https://img.haomeiwen.com/i2801130/4d09f3725bfb8ad2.png)
7.使用我们创建的私有库
正常的创建工程,创建podfile文件
![](https://img.haomeiwen.com/i2801130/92c1ea4520dd2c82.png)
8.远程私有库的依赖解决
开发中我们常用的比如网络的二级封装来作为网络请求基础组件,我们在使用中依赖于AFNetworking,则需要我们修改.podspec文件的信息
![](https://img.haomeiwen.com/i2801130/148fbdb6d8a2048e.png)
这时候我们使用自己的私有库就会一同把依赖的三方库下载下来
8.私有库的优化
8.1优化背景分析
我们在开发中封装的基础组件,有很多种,有时候我们只是单纯的使用某一个分类而不需要网络请求工具类,这时候则需要subspec,来管理.
![](https://img.haomeiwen.com/i2801130/22114a3bd184bc37.png)
然后将修改过后的文件提交到远程私有库,同时更新本地私有索引库(自动提交远程私有索引库)
8.2验证修改成果
![](https://img.haomeiwen.com/i2801130/e91f877aa23d6ae9.png)
8.3使用subspaces
我们如果只需要使用其中某一个类就可以在podfile使用
pod 'xxxxxBase/Category'
的命令来使用一个类,而不会造成所有基础组件库全部下载下来.
网友评论