為什么要組件化
統(tǒng)一編碼規(guī)范
業(yè)務(wù)模塊組件化
開發(fā)環(huán)境動態(tài)切換
模塊可復(fù)用
UI模塊雙向依賴明顯
怎么傳遞參數(shù)
采用字典绽诚。會有缺點
妥協(xié)方案:公共的model也建立pod庫
組件化主要有三種方案:
1.?URLRouter鼠锈。缺點:需要常駐字典維持這個列表。oc一般在load方法來注冊這些url-block几于;swift沒有l(wèi)oad方法肴甸。需要常駐內(nèi)存不恭,并且影響啟動速度哑蔫,RouterManager需要import所有需要的vc頭文件拂封。
2. Target-Action案铺。代表是CTMediator蔬芥。 缺點: 采用了runtime,swift自身是不支持rumtime的,以及少量的硬編碼笔诵。
3. Protocal-Class返吻。 代表是BeeHive『跣觯總體來說還是最專業(yè)的方案测僵。缺點是對代碼侵入性高;采用一個全局字典的變量谢翎,key為Protocal的字符串捍靠,value是class;需要在app啟動(swift工程)添加注冊的方法森逮。缺點同URLRouter榨婆,優(yōu)點在于沒有硬編碼。
技術(shù)要點:
1.? 資源文件比如圖片褒侧。有的圖片是多個模塊公用良风,有的圖片只在一個模塊使用,如何使圖片更好的支持組件化闷供?
2. 有些model是在單個模塊使用拖吼,有的是多個模塊使用,如何規(guī)劃这吻?
3. 對AppDelegate瘦身吊档,需要對事件進行封裝。
組件化開發(fā)過程中缺點:
Module內(nèi)對修改要clean build后生效唾糯,太耗時間怠硼。感覺項目在相對穩(wěn)定后可以引入組建化。
組件化中疑難點:
1. swift 調(diào)用 oc的庫:新建一個swift類對oc的接口進行封裝移怯。
2. oc調(diào)用swift的香璃。
3.? 不同組件中的資源重復(fù)。
最好是分配給各個組件舟误,會有一定的浪費葡秒; 然后可以腳本去掉重復(fù)的圖片∏兑纾或者是iconFont眯牧。
4. oc和swift庫混編
5. 動態(tài)切換環(huán)境:如首頁雙擊四次,彈框赖草,選擇后学少,重啟app;
組件分層:
最底層:基礎(chǔ)組件: 持久化秧骑,導(dǎo)航欄版确,log日志扣囊,網(wǎng)絡(luò),第三方庫sdk绒疗,文件服務(wù)侵歇,分類
中間: 功能組件:?地圖服務(wù),數(shù)據(jù)管理吓蘑,城市管理盒至,廣告管理
上層: 業(yè)務(wù)模塊組件: 業(yè)務(wù)模塊解耦
建議:
少用宏
不出現(xiàn)common組件
使用storyboard:界面元素越多的情況下優(yōu)勢越明顯。