首頁 > web前端 > 前端問答 > vue中mvvm和mvc的差別有哪些

vue中mvvm和mvc的差別有哪些

青灯夜游
發布: 2022-12-27 17:59:23
原創
2302 人瀏覽過

mvvm和mvc的差別:1、mvvm各部分的通訊是雙向的,而mvc各部分通訊是單向的。 2.MVVM實作了view與model的自動同步,也就是model屬性改變時,不需要手動操作dom元素去改變view的顯示,而是改變屬性後該屬性對應的view層會自動改變。

vue中mvvm和mvc的差別有哪些

本教學操作環境:windows7系統、vue3版,DELL G3電腦。

MVC是什麼


#MVC是設計模式:

#M(Model):模型層。 是應用程式中用來處理應用程式資料邏輯的部分,模型物件負責在資料庫中存取資料;
#V(View):視圖層。 是應用程式中處理資料顯示的部分,視圖是依據模型資料所建立的;
C(Controller):控制層。 是應用程式中處理使用者互動的部分,控制器接受使用者的輸入並呼叫模型和視圖去完成使用者的需求,控制器本身不輸出任何東西和做任何處理。它只是接收請求並決定呼叫哪個模型構件去處理請求,然後再確定用哪個視圖來顯示傳回的資料。

vue中mvvm和mvc的差別有哪些

vue中mvvm和mvc的差別有哪些

#MVVM是什麼


vue框架中MVVM的M就是後端的數據,V就是節點樹,VM就是new出來的那個Vue({})物件

M(Model):模型層。 就是業務邏輯相關的資料對象,通常從資料庫映射而來,我們可以說是與資料庫對應的model。
V(View):視圖層。 就是展現出來的使用者介面。
VM(ViewModel):視圖模型層。 連接view和model的橋樑。因為,Model層中的資料往往是不能直接跟View中的控制項一一對應上的,所以,需要再定義一個資料物件專門對應view上的控制項。而ViewModel的職責就是把model物件封裝成可以顯示和接受輸入的介面資料物件。

vue中mvvm和mvc的差別有哪些

 View與ViewModel之間透過雙向綁定建立聯繫,這樣當View(視圖層)變化時,會自動更新到ViewModel(視圖模型),反之亦然。

vue中mvvm和mvc的差別有哪些

#MVVM的優點

1、mvc和mvvm都是一種設計想法。主要就是mvc中Controller演變成mvvm中的viewModel。 mvvm主要解決了mvc中大量DOM操作使頁面渲染效能降低,載入速度變慢的問題 。

2、MVVM與MVC最大的差別就是:它實作了View與Model的自動同步:當Model的屬性改變時,我們就不用再自己手動操作Dom元素來改變View的顯示,它會自動變化。

3、整體看來,MVVM比MVC精簡很多,我們不用再用選擇器頻繁地操作DOM。

MVVM並不是用VM完全取代了C,ViewModel存在目的在於抽離Controller中展示的業務邏輯,而不是替代Controller,其它視圖操作業務等還是應該放在Controller中實作

MVC與MVVM有什麼不同


#區別一:

##mvvm各部分的通信是雙向的,而mvc各部分通訊是單向的。

區別二:

MVVM 與MVC 最大的差異就是:它實作了View與Model的自動同步

  • 當Model屬性改變時,不用手動操作Dom元素去改變View的顯示。

  • 而改變屬性後,該屬性對應View的顯示會自動改變

MVVM響應式原則


  • vue是採用資料劫持配合發布者-訂閱者的模式的方式,
    • 透過Object.defineProperty()來劫持各個屬性的getter和setter
    • #在資料變動時,發布訊息給依賴收集器(dep中的subs),去通知(notify)觀察者,做出對應的回調函數,更新視圖
  • MVVM作為綁定的入口,整合Observer,Compile和Watcher三者,
    • 透過Observer來監聽model資料變化,
    • 透過Compile來解析編譯範本指令,
    • 最終利用Watcher搭起Observer,Compile之間的通訊橋路,
    • 達到資料變化Observer)=>視圖更新;視圖互動變化=>資料model變更的雙向綁定效果。

【相關推薦:vuejs影片教學web前端開發

以上是vue中mvvm和mvc的差別有哪些的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板