看完組件是什么,如何拆分組件,各大門派的做法后,我在現(xiàn)有的大工程內(nèi)效仿MGJ,工程內(nèi)加入MGJRouter+加了一個(gè)協(xié)議映射服務(wù)類的中間件.全局頁面跳轉(zhuǎn)不再寫push+present,A模塊調(diào)用B模塊的方法也不再直接調(diào)用,組件化完成了!!!本寶寶還太年輕
接著上篇的笑話繼續(xù).
再完成對自己項(xiàng)目笑話似的
組件化之后,我自己也在想這也太TM簡單了把!還值當(dāng)大家吵來吵去,還值當(dāng)大家爭相效仿.所以回頭看看有沒有什么我漏掉了,還真有.
1.拾遺
Limboy>蘑菇街 App 的組件化之路文章最后有這么一段:
殼工程是什么東西?
2.開竅
為了更好的分工協(xié)作巫击,團(tuán)隊(duì)會(huì)安排團(tuán)隊(duì)成員各自維護(hù)一個(gè)相對獨(dú)立的業(yè)務(wù)組
件窃爷。這個(gè)時(shí)候我們引入組件化方案荠卷,一是為了解除組件之間相互引用的代碼硬
依賴捻脖,二是為了規(guī)范組件之間的通信接口糖声; 讓各個(gè)組件對外都提供一個(gè)黑盒服
務(wù),而組件工程本身可以獨(dú)立開發(fā)測試鸦泳,減少溝通和維護(hù)成本冯丙,提高效率肉瓦。
進(jìn)一步發(fā)展,當(dāng)團(tuán)隊(duì)涉及到轉(zhuǎn)型或者有了新的立項(xiàng)之后银还,一個(gè)團(tuán)隊(duì)會(huì)開始維護(hù)
多個(gè)項(xiàng)目App风宁,而多個(gè)項(xiàng)目App的需求模塊往往存在一定的交叉,而這個(gè)時(shí)候組
件化給我們的幫助會(huì)更大蛹疯,我只需要將之前的多個(gè)業(yè)務(wù)組件模塊在新的主App
中進(jìn)行組裝即可快速迭代出下一個(gè)全新App戒财。
以上圖與文完全摘自:iOS組件化實(shí)踐方案-LDBusMediator煉就
組件化==>目的:減少溝通和維護(hù)成本,提高效率
組件化==>更遠(yuǎn)大的理想:多個(gè)基礎(chǔ)組件+多個(gè)業(yè)務(wù)組件可以隨意組合演化出多個(gè)App.
組合的例子:
韓國組合
SuperJunior
一共有13個(gè)人.為了應(yīng)對市場需求(更好的賺中國fans的錢),13人內(nèi)抽出6個(gè)人再加上兩個(gè)華裔的練習(xí)生=新組合SuperJunior-M
.這個(gè)例子也很好的說明了組件化成功與否的標(biāo)志.即完成組件化后,各個(gè)組件能否進(jìn)行任意的拆裝組合就是一個(gè)新的App.能==>組件化成功.
3.如何即完成目的又實(shí)現(xiàn)遠(yuǎn)大的理想
前面所述可以看出組件化還是為了代碼的解耦,當(dāng)然組件化帶來解耦是一種更兇悍的解耦==>代碼的物理性解耦.
那么通過Xcode如何實(shí)現(xiàn)代碼的物理性解耦
呢?
首先想到多工程開發(fā),多工程聯(lián)合編譯.
寫了demo試了試,沒有什么明顯的缺點(diǎn).
但最終選了pod,因?yàn)閜od可以說就是為組件化而生的.平時(shí)我們用pod是為了給工程加一些很好用的第三方庫.但回想下,第三方庫是不是就像一些組件
插在了工程里:
AFNetworking==>網(wǎng)絡(luò)組件
SDWebImage==>圖片組件
而我們要做的就是將自己的業(yè)務(wù)模塊梳理抽象成一個(gè)個(gè)pod,然后插回自己的工程里.而這個(gè)工程也就是開頭提到的殼工程
.