iOS 組件化01

  • 《iOS 組件化-路由設(shè)計思路分析》
  • 軟件人員從軟件工程的角度出發(fā),從原來簡單的MVC演化到MVP,MVVM,VIPER等復(fù)雜結(jié)構(gòu)。更換適合業(yè)務(wù)的架構(gòu),是為后期更好的維護(hù)。
  • 要求快速迭代,最好一天出一個新功能,而且要不更新就要體驗到新功能。于是用h5,ReactNative,Weex等技術(shù)對已有的項目進(jìn)行改造。項目架構(gòu)也變得更加復(fù)雜??v向的會進(jìn)行分層,網(wǎng)絡(luò)層,數(shù)據(jù)層持久層,UI層。每一層會根據(jù)業(yè)務(wù)進(jìn)行組件化。盡管以后更好維護(hù),增加開發(fā)效率,但是如何解耦各層,解耦各界面和組件,保持高內(nèi)聚,低耦合,是很大挑戰(zhàn)。
  • React和VUE一直處于風(fēng)口浪尖。SPA單頁面應(yīng)用中,路由起到了關(guān)鍵作用。路由的作用是保證URL和頁面同步。在前端看來,視圖是資源的一種表現(xiàn)。當(dāng)用戶在頁面中進(jìn)行操作時,應(yīng)用會在若干個交互狀態(tài)中切換,路由則可記錄下某些重要的狀態(tài)。而這些變化同樣會在瀏覽器的歷史中。通過前進(jìn)后退按鈕進(jìn)行切換。可以通過手動輸入或者與頁面交互來改變URL。然后同步或者異步的方式來發(fā)送獲取資源,重繪UI。
  • react-router
  • URL和UI同步的問題。
  • 3Dtouch或通知來了,跳轉(zhuǎn)到APP內(nèi)部比較深的層次
  • 自家一系列APP之間如何跳轉(zhuǎn)
  • 如何解除APP組件之間和APP界面之間的耦合
  • 如何能統(tǒng)一iOS和Android的頁面跳轉(zhuǎn)邏輯。甚至如何能統(tǒng)一三端的請求資源的方式。
  • 如果使用了動態(tài)下發(fā)配置文件來配置APP的跳轉(zhuǎn)邏輯,如何做到兩端共用配置?
  • 如果APP出現(xiàn)bug,如何不使用JSPatch,就能簡單修復(fù)bug?如簡單降級,或者給個錯誤頁面提示。
  • 如何每個組件和頁面之間跳轉(zhuǎn)都進(jìn)行埋點統(tǒng)計。手寫代碼埋點?利用runtime AOP?
  • 如何在每個組件調(diào)用過程中,加入調(diào)用的邏輯檢查,令牌機(jī)制,配合灰度進(jìn)行風(fēng)控邏輯。
  • 如何在APP任何界面都可以調(diào)用同一個界面或者同一個組件。只能在AppDelegate里面注冊單例來實現(xiàn)?
  • 都可以在APP端設(shè)計一個路由來解決。
  • APP之間的跳轉(zhuǎn) URL Scheme
  • 對一個資源的訪問,蘋果也是用URI的方式來訪問。
  • APP內(nèi)組件間的路由設(shè)計。APP內(nèi)部路由設(shè)計,主要解決2個問題:各個頁面組件間的跳轉(zhuǎn)問題。各個組件之間相互調(diào)用問題。
  • MVVM,原來View對應(yīng)的與數(shù)據(jù)相關(guān)的代碼,移到viewModel中,相應(yīng)的C也變瘦了,演變成M-VM-C-V的結(jié)構(gòu)。這里面的C的代碼可以只剩下頁面跳轉(zhuǎn)相關(guān)的邏輯。
  • MVVM框架的一個重要目的,除了解耦外,還有2個很重要的目的:代碼高復(fù)用率,方便進(jìn)行單元測試。如果需要測試一個業(yè)務(wù)是否正確,我們只需要對viewModel進(jìn)行單元測試即可。前提是我們假定用rac進(jìn)行UI綁定的過程是準(zhǔn)確無誤的。我們只需要單元測試到viewModel即可完成業(yè)務(wù)邏輯的測試。
  • 頁面跳轉(zhuǎn)也屬于業(yè)務(wù)邏輯,所以應(yīng)該放在viewmodel中一起單元測試。保證業(yè)務(wù)邏輯測試的覆蓋率。把頁面跳轉(zhuǎn)放到VM中,一種是路由,一種是ipd-mvvm-kit。
  • 頁面跳轉(zhuǎn)相互的耦合性就體現(xiàn)出來了:
    由于push,present后要帶VC,需要引入VC。
    由于寫死了跳轉(zhuǎn),一旦上線,不受控制
    直接跳轉(zhuǎn)到內(nèi)部界面,需要寫一個跳轉(zhuǎn)入口到指定界面
  • 組件之間的調(diào)用不可避免,相互調(diào)用對方組件暴露的接口。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容