摘要:架構模式的文章很多,好理解的沒有幾個。沒有明確的目的理解架構模式的真正意義是什么虛擬和組件化在中的位置題目開的太大,一定有很多疏忽錯誤的地方,也懇請大家指出。因此,模式出現了。然后通過雙向數據綁定使中的狀態數據與中的顯示狀態保持一致。
1. MV* 1.1 后端MVC與前端MVC架構模式的文章很多,好理解的沒有幾個。大部分文章出現的主要問題有:
沒有設定好作用域:前端MVC是改造過的MVC,和后臺MVC有明顯的區別,不能一概而論
沒有實際的例子:實際的例子對應日常的工作,沒有就很難產生共鳴,從而造成看一次忘一次的困擾。
沒有明確的目的:理解架構模式的真正意義是什么?虛擬DOM和組件化在MV*中的位置?
題目開的太大,一定有很多疏忽錯誤的地方,也懇請大家指出。
從實現上來說,主要可以分為后端MVC和前端MVC兩種。這兩種MVC的不同點如下:
可以看到,前端的MVC其實是為了解決前端復雜JS模塊化的問題,從后端MVC的V分出來的MVC,與后端MVC并沒有直接的關系。前端的MVC中,M占的比例很低,只指代數據。而后端V的比例很低,只有模版的部分。
1.2 MVC/MVP/MVVM可以清晰的看出,這三個架構的區別在“M與V聯系”的部分。下面我們針對這一部分做一個對比:
Controller: 負責監聽View的用戶事件,得到數據后Controller做一些處理,然后渲染View。
當然,在一些后端MVC架構里,Model也可以直接渲染View模版,但這只是不同變種的實現,這里不多做討論。
但是隨時邏輯的復雜,這樣的處理遇到了很難調試的問題。由于View一定要運行在UI環境下,而且Model或者Controller和View強耦合,沒有辦法多帶帶驗證應用邏輯的正確性。當出了問題之后,因為各個模塊是耦合在一起的,也不能快速判斷究竟是哪個模塊出現的問題。因此,MVP模式出現了。
Presenter: 比起Controller,Presenter會調用View層提供的接口去渲染Model。這樣做有幾點好處:
面向接口編程
更好的解耦
方便做單元測試
現在P和V解耦了,P可以自己做單元測試了。軟件結構劃分的更加清楚,邏輯清晰并方便調試。但是這一切都來自于一個前提:View層要提供接口。當一個UI復雜起來的時候,View層需要提供的接口是很多的,這本身也是一種開發調試的成本。所以,MVVM應運而生。
ViewModel: 比起MVP中View需要自己提供API,MVVM在VM中構建一組狀態數據(state data),作為View狀態的抽象。然后通過雙向數據綁定(data binding)使VM中的狀態數據(state data)與View中的顯示狀態(screen state)保持一致。這樣,VM中的展示邏輯只需要修改對應的狀態數據,就可以控制View的狀態,從而避免在View上開發大量的接口。
VM有沒有什么缺點?有的,當UI比較簡單的時候,使用VM就會使業務邏輯變得復雜,有過分設計的嫌疑。所以VM只適合復雜UI交互的項目。
2. 舉個栗子栗子
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/95499.html
摘要:架構模式的文章很多,好理解的沒有幾個。沒有明確的目的理解架構模式的真正意義是什么虛擬和組件化在中的位置題目開的太大,一定有很多疏忽錯誤的地方,也懇請大家指出。因此,模式出現了。然后通過雙向數據綁定使中的狀態數據與中的顯示狀態保持一致。 架構模式的文章很多,好理解的沒有幾個。大部分文章出現的主要問題有: 沒有設定好作用域:前端MVC是改造過的MVC,和后臺MVC有明顯的區別,不能一概...
摘要:架構模式的文章很多,好理解的沒有幾個。沒有明確的目的理解架構模式的真正意義是什么虛擬和組件化在中的位置題目開的太大,一定有很多疏忽錯誤的地方,也懇請大家指出。因此,模式出現了。然后通過雙向數據綁定使中的狀態數據與中的顯示狀態保持一致。 架構模式的文章很多,好理解的沒有幾個。大部分文章出現的主要問題有: 沒有設定好作用域:前端MVC是改造過的MVC,和后臺MVC有明顯的區別,不能一概...
摘要:是的架構的實現。是在年提出的一種前端架構,主要用來處理復雜的邏輯的一致性問題當時是為了解決頁面的消息通知問題。 去年10月底來到了新公司,剛開始接手 Android 項目時,發現該項目真的是一團遭,項目開發上沒有任何架構可言,開發人員連簡單的 MVC、MVP 都不了解,Activity 及其臃腫,業務邊界也不明確,因此我決定重新分析一下當前主流的幾種開發架構,選出適合當前項目的架構形式...
閱讀 2885·2021-10-26 09:49
閱讀 3221·2021-10-14 09:42
閱讀 2042·2021-09-13 10:31
閱讀 2580·2019-08-30 11:13
閱讀 2962·2019-08-29 16:31
閱讀 1068·2019-08-29 13:58
閱讀 1859·2019-08-29 12:12
閱讀 3554·2019-08-26 13:48