本篇內(nèi)容介紹了“vue中mvvm和mvc的區(qū)別是什么”的有關(guān)知識(shí),在實(shí)際案例的操作過(guò)程中,不少人都會(huì)遇到這樣的困境,接下來(lái)就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
專(zhuān)注于為中小企業(yè)提供成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)安寧免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了成百上千企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過(guò)網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
mvvm和mvc的區(qū)別:1、mvvm各部分的通信是雙向的,而mvc各部分通信是單向的。2、MVVM實(shí)現(xiàn)了view與model的自動(dòng)同步,也就是model屬性改變時(shí),不需要手動(dòng)操作dom元素去改變view的顯示,而是改變屬性后該屬性對(duì)應(yīng)的view層會(huì)自動(dòng)改變。
MVC是一種設(shè)計(jì)模式:
M(Model):模型層。是應(yīng)用程序中用于處理應(yīng)用程序數(shù)據(jù)邏輯的部分,模型對(duì)象負(fù)責(zé)在數(shù)據(jù)庫(kù)中存取數(shù)據(jù);
V(View):視圖層。是應(yīng)用程序中處理數(shù)據(jù)顯示的部分,視圖是依據(jù)模型數(shù)據(jù)創(chuàng)建的;
C(Controller):控制層。是應(yīng)用程序中處理用戶交互的部分,控制器接受用戶的輸入并調(diào)用模型和視圖去完成用戶的需求,控制器本身不輸出任何東西和做任何處理。它只是接收請(qǐng)求并決定調(diào)用哪個(gè)模型構(gòu)件去處理請(qǐng)求,然后再確定用哪個(gè)視圖來(lái)顯示返回的數(shù)據(jù)。
vue框架中MVVM的M就是后端的數(shù)據(jù),V就是節(jié)點(diǎn)樹(shù),VM就是new出來(lái)的那個(gè)Vue({})對(duì)象
M(Model):模型層。就是業(yè)務(wù)邏輯相關(guān)的數(shù)據(jù)對(duì)象,通常從數(shù)據(jù)庫(kù)映射而來(lái),我們可以說(shuō)是與數(shù)據(jù)庫(kù)對(duì)應(yīng)的model。
V(View):視圖層。就是展現(xiàn)出來(lái)的用戶界面。
VM(ViewModel):視圖模型層。連接view和model的橋梁。因?yàn)?,Model層中的數(shù)據(jù)往往是不能直接跟View中的控件一一對(duì)應(yīng)上的,所以,需要再定義一個(gè)數(shù)據(jù)對(duì)象專(zhuān)門(mén)對(duì)應(yīng)view上的控件。而ViewModel的職責(zé)就是把model對(duì)象封裝成可以顯示和接受輸入的界面數(shù)據(jù)對(duì)象。
View與ViewModel之間通過(guò)雙向綁定建立聯(lián)系,這樣當(dāng)View(視圖層)變化時(shí),會(huì)自動(dòng)更新到ViewModel(視圖模型),反之亦然。
MVVM的優(yōu)勢(shì)
1、mvc和mvvm都是一種設(shè)計(jì)思想。 主要就是mvc中Controller演變成mvvm中的viewModel。 mvvm主要解決了mvc中大量DOM操作使頁(yè)面渲染性能降低,加載速度變慢的問(wèn)題 。
2、MVVM與MVC最大的區(qū)別就是:它實(shí)現(xiàn)了View和Model的自動(dòng)同步:當(dāng)Model的屬性改變時(shí),我們不用再自己手動(dòng)操作Dom元素來(lái)改變View的顯示,它會(huì)自動(dòng)變化。
3、整體看來(lái),MVVM比MVC精簡(jiǎn)很多,我們不用再用選擇器頻繁地操作DOM。
MVVM并不是用VM完全取代了C,ViewModel存在目的在于抽離Controller中展示的業(yè)務(wù)邏輯,而不是替代Controller,其它視圖操作業(yè)務(wù)等還是應(yīng)該放在Controller中實(shí)現(xiàn)。
區(qū)別一:
mvvm各部分的通信是雙向的,而mvc各部分通信是單向的。
區(qū)別二:
MVVM 與 MVC 最大的區(qū)別就是:它實(shí)現(xiàn)了View和Model的自動(dòng)同步
當(dāng)Model屬性改變時(shí),不用手動(dòng)操作Dom元素去改變View的顯示。
而改變屬性后,該屬性對(duì)應(yīng)View的顯示會(huì)自動(dòng)改變
vue是采用數(shù)據(jù)劫持配合發(fā)布者-訂閱者的模式的方式,
通過(guò)Object.defineProperty()來(lái)劫持各個(gè)屬性的getter和setter,
在數(shù)據(jù)變動(dòng)時(shí),發(fā)布消息給依賴(lài)收集器(dep中的subs),去通知(notify)觀察者,做出對(duì)應(yīng)的回調(diào)函數(shù),更新視圖
MVVM作為綁定的入口,整合Observer,Compile和Watcher三者,
通過(guò)Observer來(lái)監(jiān)聽(tīng)model數(shù)據(jù)變化,
通過(guò)Compile來(lái)解析編譯模板指令,
最終利用Watcher搭起Observer,Compile之間的通信橋路,
達(dá)到數(shù)據(jù)變化Observer)=>視圖更新;視圖交互變化=>數(shù)據(jù)model變更的雙向綁定效果。
“vue中mvvm和mvc的區(qū)別是什么”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!