前言:
近期終于項目做完了批幌,可以停下手好好整理下自己的工作丐巫,一直認為 “總結(jié)” 這才是能力提升的關鍵點牍蜂,如下是對組件化的一些經(jīng)驗之談厂置,若有不對之處或者不足之處 非常希望下方評論指出陷虎,或者聯(lián)系郵箱 729020128@qq.com
接下來:共同探討下吧
1. 私有組件(本地)
$ pod lib create ZQTools (從GitHub上下載一個spec的模板到踏,ZQTools是我的工程名)
What platform do you want to use?? [ iOS / macOS ] (這個應該不用說了)
> iOS
What language do you want to use?? [ Swift / ObjC ] (這個應該不用說了)
> ObjC
Would you like to include a demo application with your library? [ Yes / No ] (Yes后會生成一個Demo Project,也可以No)
> Yes
Which testing frameworks will you use? [ Specta / Kiwi / None ] (這個最好不要選尚猿,他自帶的frameworks會引入一些不需要的庫窝稿,沒必要)
> None
Would you like to do view based testing? [ Yes / No ] (這個應該不用說了)
> No
What is your class prefix? (前綴名)
> ZQ
這樣會自動打開模板工程如下圖
然后就可以開始寫代碼了,例如我們寫了一個自定義的 ScrollView 就把自己的ScrollView放在 下圖中凿掂,替換 ReplaceMe.m 文件就好了
然后Podfile的一些設置如下伴榔,因為你的組件也是可能需要引入別的三方庫,如SDwebImage啊庄萎,那就需要在Podfile中引入踪少,podInstall后會在 Pods文件下看到遠程庫,我們自己現(xiàn)在制作的組件是在 Development Pods 文件夾下糠涛。如下圖是一些圖文注釋,這里我們使用的 pod 'ZQTools', :path => '../'是我們先使用的本地絕對路徑的地址來替代我們遠程私有庫地址援奢,如果這個走通了,那么證明我們的私有庫制作步驟沒問題了脱羡,接下來的只要把路徑改為遠程私有庫地址就ok 了
這樣就可以在本地使用了萝究,注意 指向組件的路徑要寫對免都,如果沒什么問題,本地的組件化搭建使用就完成了帆竹,文章最后會附上源碼
2. 私有庫(遠程)
現(xiàn)在要做的就是绕娘,將本地的私有庫搬到遠程就好了,這里要說明一下為什么要用 “碼云”栽连,理由只有一個:GitHub的私有庫要錢??(*@ο@*) ~
- 三步走: a. 創(chuàng)建遠程私有庫倉庫 b. 創(chuàng)建遠程組件git項目 c. 本地同步遠程私有庫 修改.spec文件并push更新
a. 創(chuàng)建遠程私有倉庫:這個遠程倉庫主要是來儲存各個組件的spec文件险领,spec文件中存著每個組件的.git地址,這樣應該明白了秒紧,對绢陌,遠程索引庫
其實就是創(chuàng)建一個私有的空項目,用來存組件的下載地址熔恢。如有不清楚的同學可以參考我公開的這個遠程庫 遠程庫Demo地址
//重點來了脐湾,specgx文件夾后續(xù)還會出現(xiàn),現(xiàn)在是克隆下遠程剛剛新建的遠程私有倉庫叙淌,后續(xù)修改了還要push上去的喲
pod repo add specgx git@gitee.com:zzq_hd/Spec.git
b. 創(chuàng)建遠程組件git項目:這里存放的就是你的組件了秤掌,如上問已經(jīng)有說明私有庫組件的本地實現(xiàn),現(xiàn)在就只要給它添加到遠程就OK了鹰霍。
//1. 創(chuàng)建一個空項目闻鉴,選擇上傳已有項目
//2. 關聯(lián)到已完成的本地私有組件工程
pod repo add specgx git@gitee.com:zzq_hd/Spec.git
//3. push (當然,需要add. commit 這個就不用說了)
push -u origin master
c. 重點C鳌C系骸!修改(手動創(chuàng)建).podspec文件并且更新到遠程庫中督勺,有疑問為什么需要手動創(chuàng)建的不妨動手一試渠羞,你會發(fā)現(xiàn)會出些奇奇怪怪的問題,也沒自己創(chuàng)建來的快些玷氏,so...自己動手豐衣足食
如圖:
- 查看本地倉庫
$ open ~/.cocoapods/repos/ //對堵未,在repo這個文件夾下就是所有的本地倉庫了
$ pod repo
master
- Type: git (master)
- URL: https://github.com/CocoaPods/Specs.git
- Path: /Users/zzq/.cocoapods/repos/master
PrivateSpecs
- Type: git (master)
- URL: git@gitee.com:zzq_hd/PrivateSpecs.git
- Path: /Users/zzq/.cocoapods/repos/PrivateSpecs
specgx
- Type: git (master)
- URL: https://gitee.com/zzq_hd/Spec.git
- Path: /Users/zzq/.cocoapods/repos/specgx
新建(或者復制已有的組件文件夾)注意,文件名需要和遠程組件項目的文件名一直(在我這就是"ZZQTools")盏触,如圖:
然后就是動手修改下spec文件渗蟹,如圖標注:
最后就是將本地修改了的倉庫Push上去:
pod repo push specgx ZQTools.podspec//不行的話你就進文件夾,add commit后push就行了赞辩,目的達到方法不限
至此雌芽,所有的遠程庫搭建已經(jīng)完畢,就可以痛快的用了辨嗽,誒世落?不對,我們的遠程庫是否有效呢糟需,
這個時候屉佳,我們需要回到下上文谷朝,這就是為什么我讓先完成本地倉庫的好處了,當本地倉庫完成后武花,就可以保證我們的組件本地是可以使用的圆凰,現(xiàn)在只要保證遠程庫可以從本地引用修改為遠程 source引用pod,就沒問題了
- 先查看本地庫是否OK体箕,
$ pod search ZZQTools
//如果接收到如下打印专钉,就證明ok了
-> ZZQTools (0.1.0)
ZZQTools.
pod 'ZZQTools', '~> 0.1.0'
- Homepage: https://gitee.com/zzq_hd
- Source: https://gitee.com/zzq_hd/ZZQTools.git
- Versions: 0.1.0 [PrivateSpecs repo]
接著就可以在實際使用的工程中使用了,使用項目工程Demo及組件Demo會在文章最后附上供各位老板參考
那么累铅,我們的遠程私有庫搭建就完成了跃须,敬請期待下一部:組件間通信--路由、模塊化拆分娃兽。如有哪里寫錯或者看官們有和疑問歡迎評論提出菇民,或mail:729020128@qq.com
附:
實際使用工程Demo及組件工程Demo(簡潔版)如覺得有所幫助,你的star會是我繼續(xù)分享的動力