一、組件化概念介紹
- 將一個單一工程的項目,分解成為各個獨立的組件;然后按照某種方式,任意組織成一個擁有完整業務邏輯的工程
二、如何劃分成為一個組件
-
簡單可以劃分為:業務組件、功能組件、基礎組件組件化1.png
二、遠程私有庫簡紹
- 遠程私有庫中的“遠程”表示,我們開發的代碼存儲到遠程代碼倉庫中,而不是本地;“私有”表示,訪問這個庫是需要權限的,只有通過庫的作者授權了以后,他人才可以訪問使用。
-
下面通過一幅圖來對比一下 遠程私有庫 和 開源庫組件化.png
三、創建私有庫
1、首先要找一個遠程代碼托管平臺(碼云、碼市、GitHub<收費>),這些都可以。
-
1、創建一個遠程私有索引庫,后續中我們所有組件的spec文件都會上傳到這個遠程私有索引庫中
組件化2.png
2、基礎組件
- 1、創建存放基礎組件源碼的遠程庫
- 1、使用終端來快速創建一個私有庫模板庫
RemoteLibrary $ pod lib create RevanBaseModule
- 2、在回答下面的問題
What language do you want to use?? [ Swift / ObjC ]
> ObjC
Would you like to include a demo application with your library? [ Yes / No ]
> Yes
Which testing frameworks will you use? [ Specta / Kiwi / None ]
> None
Would you like to do view based testing? [ Yes / No ]
> No
What is your class prefix?
> Revan
-
3、把需要組件化的代碼拖到模板中的Classes文件夾下組件化3.png
- 4、執行以下命令把代碼加入項目工程中
pod install
組件化4.png
組件化5.png
3、編輯spec并且上傳到遠程索引庫
-
1、編輯spec組件6.png
-
2、遞交代碼到遠程倉庫中組件化7.png
-
3、打tag并且上傳遠程組件化8.png
- 4、可以對spec文件做一下驗證,只有通過了驗證spec文件才能上傳成功
-
spec本地驗證組件化9.png
-
spec遠程驗證組件化10.png
-
spec本地驗證
-
5、上傳spec文件到本地組件化11.png
-
本地索引庫組件化12.png
-
遠程索引庫組件化13.png
-
本地索引庫
- 5、小結
- 只要執行一次上傳spec文件的操作,本地索引庫和遠程索引庫都會上傳上去
pod repo push RevanSpecs RevanBaseModule.podspec
三、迭代基礎組件
- 1、把需要組件化的代碼拖入Classes文件夾下
- 2、修改podspec文件中的版本號
- 3、提交代碼到遠程倉庫
- 4、打tag:1、與version版本號相同,2、推送到遠程
- 5、驗證podspec文件
- 6、上傳podspec文件
四、使用私有庫
-
1、使用私有庫時,必須在podfile文件中引入source組件化14.png
-
2、在Podfile文件中添加了source后安裝成功組件化15.png
- 3、為什么要同時在Podfile文件中添加Cocopods官方source 和 私有source
- 1、通常情況下使用第三方庫的時候,都是使用Cocopods官方source,但是當我們使用私有庫的時候,因為我們私有庫的podspce文件并沒有上傳到CocoPods官方索引庫中,所以是在不到我們的私有庫,這就是為什么第一次安裝失敗的原因
- 2、當我們在Podfile文件中只添加私有庫的源時,因為添加了源就指定了索引庫,這樣會造成只能搜索到我們的私有庫而搜索不到AFNetworking等等的開源庫,所以,為了都能使用,當我們在使用私有庫時,必須要同時在Podfile文件中添加CocoPods官方和私有source
五、subspec
- 1、為什么要使用subspec
- 因為有時我們項目中只是用到了基礎組件中的Category文件夾中的代碼,如何使用開始的方式添加私有組件的時候,會把私有組件中的所有代碼統統加入到項目中,這就造成很多不必要的代碼加入了項目中,而使用subspec后就會完美的解決這個問題
-
2、subspec書寫格式組件化16.png
-
3、使用了subspec后搜索出來的格式組件化17.png
-
4、沒有使用subspec和使用了subspec相比較
組件化18.png組件化19.png -
5、使用私有庫中多個文件夾組件化20.png