引言
最近對組件化相關(guān)的知識比較感興趣,翻看了好多大神的博客,算是對組件化有個大概的了解了。所謂的組件化,一方面是抽取私有Pod庫,其實就是把我們的項目分成多個模塊,例如基類模塊、工具類模塊、登陸模塊、首頁模塊等等,然后把他們抽取成一個個私有Pod庫,像平時利用cocopods導(dǎo)入三方庫那樣導(dǎo)入我們的這些私有庫;另一個方面就是關(guān)于模塊之間的通信問題,常常采用路由跳轉(zhuǎn)。本文的主要目的是前者。
一. 公有Pod庫的本質(zhì)
公有Pod庫大家應(yīng)該都比較熟悉,項目中經(jīng)常使用的三方庫,如AFNetworking,Masonry,SDWebImage等都屬于公有Pod庫,任何一個開發(fā)者都可以把其導(dǎo)入自己的項目工程中進(jìn)行使用。與之相對應(yīng)的就是私有Pod庫,它只能被有權(quán)限的人使用。其實公有和私有的區(qū)別不大,就是誰來管理.podspecs文件的問題,下面就說一下大家比較熟悉的公有Pod庫的本質(zhì)
- 遠(yuǎn)程索引庫:存在一個公共的遠(yuǎn)程索引庫,包含所有三方框架的.podspec文件,在.podspecs文件中包括了框架名,框架源碼地址,用戶名,描述等信息。
- 本地索引庫:在安裝pod,執(zhí)行pod setup的時候,會將公共的遠(yuǎn)程索引庫copy一份到本地,也即是公共的本地索引庫。(可以查看此目錄:/Users/xx/.cocoapods/repos, xx替換成你的電腦名,下同)
- 檢索文件: 公共的本地索引庫會另外生成一個檢索文件,以鍵值對的形式,方便以后查找。( 可以查看此目錄:/Users/xx/Library/Caches/CocoaPods)
- 導(dǎo)入三方庫:執(zhí)行pod install的時候,先去檢索文件中查找,找到之后,在公共的本地索引庫拿到框架源碼地址進(jìn)行導(dǎo)入。
二. 創(chuàng)建私有Pod庫
上面已經(jīng)提到了,公有Pod庫是任何一個開發(fā)者都可以導(dǎo)入使用的,并且是能看到源碼的,這顯然不是我們想要的。我們的pod庫應(yīng)該是只能內(nèi)部人員才能導(dǎo)入使用,所以我們應(yīng)該把一個個模塊抽取成私有的Pod庫。
公有和私有Pod庫的主要區(qū)別就是遠(yuǎn)程索引庫不同,我們需要創(chuàng)建一個私有的遠(yuǎn)程索引庫,用來管理私有庫的.podspec文件,其他方面大同小異。
下面以Base模塊為例,將其抽取成私有Pod庫。說明一下:原項目名為ModuleDemo,位于桌面上。
1.創(chuàng)建私有的遠(yuǎn)程索引庫
(1) 在coding.net上創(chuàng)建一個私有的倉庫FERSpecs,克隆地址是:https://git.coding.net/jokin11/FERSpecs.git,F(xiàn)ERSpecs就作為上面提到的私有的遠(yuǎn)程索引庫。
(2) 終端執(zhí)行下面命令,將私有的遠(yuǎn)程索引庫copy到本地。
pod repo add FERSpecs https://git.coding.net/jokin11/FERSpecs.git
執(zhí)行完畢后,在目錄:/Users/xx/.cocoapods/repos 下會多出來一個FERSpecs文件夾,至此私有的索引庫部分就完成了。
2.創(chuàng)建私有Pod組件庫
(1) 打開終端,進(jìn)入到桌面目錄下,執(zhí)行下面命令來創(chuàng)建一個名為FERBase的Pod庫空模板。
pod lib create FERBase
依次輸入下圖信息進(jìn)行基礎(chǔ)配置:

配置完畢之后,Pod庫空模板就創(chuàng)建成功了,系統(tǒng)會自動此模板。
(2) 在coding.net上創(chuàng)建遠(yuǎn)程倉庫FERBase,克隆地址是:https://git.coding.net/jokin11/FERBase.git,在終端FERBase目錄下執(zhí)行下面命令,關(guān)聯(lián)本地倉庫到遠(yuǎn)程倉庫。
git remote add origin https://git.coding.net/jokin11/FERBase.git
(3) 將原項目MoudleDemo中需要封裝的Base模塊,復(fù)制到 FERBase/FERBase/Classes中,同時將Base文件夾拖入項目的下圖位置,順便刪除ReplaceMe文件,


pod spec lint
等待片刻,終端出現(xiàn) FERBase.podspec passed validation,則說明 FERBase.podspec 文件通過校驗。
3.將FERBase.podspec文件加入私有的遠(yuǎn)程索引庫
上面已經(jīng)驗證過 FERBase.podspec 文件沒問題,接著就是要把 FERBase.podspec 文件添加到私有的索引庫(也就是第一步中得到的索引庫 FERSpecs),在終端執(zhí)行下面命令:
pod repo push FERSpecs FERBase.podspec
上面命令對 FERBase.podspec 文件做了兩個操作:一個是將其推送到私有的遠(yuǎn)程索引庫,可以去 coding.net 的 FERSpecs倉庫中查看;另一個是將其copy到私有的本地索引庫,這個可以去目錄:/Users/xx/.cocoapods/repos/FERSpecs 下查看到。
至此,Base模塊抽取成私有的Pod庫也就完成了,可以在終端執(zhí)行pod search FERBase來查詢它,接下來就是在原項目中使用它了。
4.使用私有Pod庫
在原項目的Podfile中,導(dǎo)入私有的Pod庫的方式如下圖

pod install命令進(jìn)行安裝,安裝完畢之后,可以看到Pods文件夾中已經(jīng)有FERBase了,然后把原項目中的Base文件夾給刪除掉即可。另外,公司內(nèi)部其他成員在使用之前需要執(zhí)行下面命令,將私有的遠(yuǎn)程索引庫copy到本地,然后就可以正常使用了。
pod repo add FERSpecs https://git.coding.net/jokin11/FERSpecs.git
總結(jié)
在整個過程中,需要到git服務(wù)器上創(chuàng)建兩個倉庫,一個作為索引庫,一個作為pod組件庫;接著就是創(chuàng)建模板并配置.podspec文件;然后就是讓索引庫管理.podspec文件,之后就是使用了,如果清楚了這幾步,對于抽取私有Pod庫應(yīng)該很得心應(yīng)手。