現(xiàn)在是市面上使用MVVM模型越來(lái)越多,相關(guān)的前端框架的選擇也相應(yīng)增多荧呐。
那么什么是MVVM模型汉形,它和傳統(tǒng)MVC模型有什么區(qū)別,接下來(lái)我們來(lái)總結(jié)探討一下倍阐。
MVVM即Model-View-ViewModel的簡(jiǎn)寫(xiě)概疆。即模型-視圖-視圖模型。模型(Model)指的是后端傳遞的數(shù)據(jù)峰搪。視圖(View)指的是所看到的頁(yè)面岔冀。視圖模型(ViewModel)是mvvm模式的核心,它是連接view和model的橋梁概耻。它有兩個(gè)方向:一是將模型(Model)轉(zhuǎn)化成視圖(View)使套,即將后端傳遞的數(shù)據(jù)轉(zhuǎn)化成所看到的頁(yè)面。實(shí)現(xiàn)的方式是:數(shù)據(jù)綁定鞠柄。二是將視圖(View)轉(zhuǎn)化成模型(Model)侦高,即將所看到的頁(yè)面轉(zhuǎn)化成后端的數(shù)據(jù)。實(shí)現(xiàn)的方式是:DOM 事件監(jiān)聽(tīng)厌杜。這兩個(gè)方向都實(shí)現(xiàn)的奉呛,我們稱(chēng)之為數(shù)據(jù)的雙向綁定。
MVC是Model-View- Controller的簡(jiǎn)寫(xiě)夯尽。即模型-視圖-控制器瞧壮。M和V指的意思和MVVM中的M和V意思一樣。C即Controller指的是頁(yè)面業(yè)務(wù)邏輯匙握。使用MVC的目的就是將M和V的代碼分離咆槽。MVC是單向通信。也就是View跟Model圈纺,必須通過(guò)Controller來(lái)承上啟下秦忿。MVC和MVVM的區(qū)別并不是VM完全取代了C,只是在MVC的基礎(chǔ)上增加了一層VM赠堵,只不過(guò)是弱化了C的概念小渊,ViewModel存在目的在于抽離Controller中展示的業(yè)務(wù)邏輯,而不是替代Controller茫叭,其它視圖操作業(yè)務(wù)等還是應(yīng)該放在Controller中實(shí)現(xiàn)酬屉。也就是說(shuō)MVVM實(shí)現(xiàn)的是業(yè)務(wù)邏輯組件的重用,使開(kāi)發(fā)更高效揍愁,結(jié)構(gòu)更清晰呐萨,增加代碼的復(fù)用性。
VUE官方莽囤,也介紹了MVVM模型相關(guān)框架(如Vue 谬擦、 React、AngularJS朽缎、Knockout惨远、Polymer等)的對(duì)比優(yōu)缺點(diǎn)谜悟,可以參考,https://cn.vuejs.org/v2/guide/comparison.html