项目组件化,顾名思义,就是将项目中的各个模块按照基础组建,功能组件,业务组件划分成一个个单独的模块,以使得各个模块间可以单独开发、测试、组合运行。
一般公司在天使轮后产品闭环已经确定,就需要实施组件化来应对A轮之后的业务扩张。
但也不是非得等到这一步才开始,如果在项目初期实施组件化,虽然代码量会有所增加,但是要把一个小项目组件化的难度也会小很多。
私有索引库
私有索引库的作用是存放.podSpec文件的。当你使用pod search AFN时,pod会在本地的索引库中进行搜索。
私有索引库分为本地私有索引库和远程私有索引库,它们是相互对应的。
本地私有索引库
本地索引库
可以发现只有一个master,这个是CocoaPods的本地索引库,但它不是私有的,只要安装过CocoaPods的电脑,都会有这么一个索引库。它对应CocoaPods的远程索引库。
由于它不是私有的,所以我们需要自己创建一个私有索引库。目前GitHub的私有代码仓库是需要money的,我们可以选择码云、码市等具有可以免费创建私有代码仓库的代码托管平台。操作和GitHub是一样的。就拿码市做例子。
远程私有索引库
1.创建远程私有索引库,复制仓库地址。
创建远程私有索引库
2.复制远程索引库地址。
复制远程仓库地址
3.打开终端,将远程私有库关联到本地。
cd /Users/yufu/.cocoapods/repos
pod repo add LTSpec https://git.coding.net/lt1061961387/LTSpec.git
4.可以发现在Finder中多了一个LTSpec。这里就是我们用来存放组件的.podSpec文件的。
LTSpec私有库
私有代码仓库
代码仓库也分公私有,因为是公司的项目,不想暴露给别人,所以也需要建立私有代码仓库。
私有索引库也属于私有代码仓库,只是从功能上分开。一个是用来存放代码的,一个是用来存放.podSpec文件的。
私有代码仓库也分为本地私有代码库和远程私有代码库,它们也是相互对应的。
本地私有代码库
1.在我们的主工程的同级目录下,创建我们的组件工程,比如我的主工程在我的桌面的LTMainProject目录下,我想抽取主工程里的网络通信模块。使用CocoaPods的模板在终端输入:
cd /Users/yufu/Desktop/LTMainProject
pod lib create LTNetworking
2.将自己抽取出的组件拷贝到创建的模板工程中
抽取的组件代码
3.修改组件的.podSpec文件
修改文件
远程私有代码仓库
1.创建远程私有代码仓库
网络通信组件的私有代码仓库
2.提交本地私有模板组件代码到远程私有代码仓库,并打上tag标签
cd /Users/yufu/Desktop/LTMainProject/LTNetworking
git add .
git commit -m '创建网络通信组件'
git tag '0.1.0'
git remote add origin git@git.coding.net:lt1061961387/LTNetworking.git
git push -u origin master
git push --tag
3.对文件进行本地验证和远程验证
cd /Users/yufu/Desktop/LTMainProject/LTNetworking
pod lib lint --private
pod spec lint --private
4.将验证通过的.podSpec文件加入到本地私有索引库,并上传到远程私有索引库
pod repo push LTSpec LTNetworking.podspec
5.在LTSpec路径下就会出现LTNetworking
LTNetworking.podspec
6.查看远程私有索引库
远程私有索引库
7.使用终端查看自己的私有组件
pod search LTNetworking
pod search LTNetworking
现在就可以使用pod安装自己的私有组件了。
安装私有组件
打开终端一顿操作猛如虎
cd /Users/yufu/Desktop/LTMainProject/LTMainProject
vim Podfile
添加source ‘https://git.coding.net/lt1061961387/LTSpec.git’
添加pod 'LTNetworking'后退出
pod install
打开主工程发现组件已经乖乖躺在Pod里了
集成组件成功
集成完成。