1. 程式人生 > 實用技巧 >mvc與mvvm的區別與聯絡

mvc與mvvm的區別與聯絡

MVC

MVC的思想:一句話描述就是Controller負責將Model的資料用View顯示出來,換句話說就是在Controller裡面把Model的資料賦值給View,比如在controller中寫document.getElementById("box").innerhtml= data[”title”],只是還沒有刻意建一個Model類出來而已。
M:Model(模型):是應用程式中用於處理應用程式資料邏輯的部分。通常模型物件負責在資料庫中存取資料。
V:View(檢視):是應用程式中處理資料顯示的部分。通常檢視是依據模型資料建立的。
C:Controller(控制器):是應用程式中處理使用者互動的部分。通常控制器負責從檢視讀取資料,控制使用者輸入,並向模型傳送資料。Controller被設計出來:1、管理自己的生命週期;2、處理Controller之間的跳轉;3、實現Controller容器。
MVC標準如圖:

廣州品牌設計公司https://www.houdianzi.com PPT模板下載大全https://redbox.wode007.com

MVVM

開發者為資料解析創建出了一個新的類:ViewModel。利用MVVM可以使我們的程式碼更加專注於處理業務邏輯而不是去關心DOM操作。

它有兩個方向:

一是將【模型】轉化成【檢視】,即將後端傳遞的資料轉化成所看到的頁面。實現的方式是:資料繫結。
二是將【檢視】轉化成【模型】,即將所看到的頁面轉化成後端的資料。實現的方式是:DOM 事件監聽。

這兩個方向都實現的,我們稱之為資料的雙向繫結。總結:在MVVM的框架下檢視和模型是不能直接通訊的。

vue就是基於MVVM模式實現的一套框架,在vue中:

Model:指的是js中的資料,如物件,陣列等等。
View:指的是頁面檢視
viewModel:指的是vue例項化物件

例如:

<div id="app-5">
  <p>{{ message }}</p>
  <button v-on:click="reverseMessage">逆轉訊息</button>
</div>
var app5 = new Vue({
  el: ‘#app-5‘,
  data: {
    message: ‘Hello Vue.js!‘
  },
  methods: {
    reverseMessage: function () {
      this.message = this.message.split(‘‘).reverse().join(‘‘)
    }
  }
})

這裡的html部分相當於View層,可以看到這裡的View通過通過模板語法來宣告式的將資料渲染進DOM元素,當ViewModel對Model進行更新時,通過資料繫結更新到View。

Vue例項中的data相當於Model層,而ViewModel層的核心是Vue中的雙向資料繫結,即Model變化時VIew可以實時更新,View變化也能讓Model發生變化。

整體看來,MVVM比MVC精簡很多,不僅簡化了業務與介面的依賴,還解決了資料頻繁更新的問題,不用再用選擇器操作DOM元素。因為在MVVM中,View不知道Model的存在,Model和ViewModel也觀察不到View,這種低耦合模式提高程式碼的可重用性。

MVVM與MVC最大的區別就是:

它實現了View和Model的自動同步,也就是當Model的屬性改變時,我們不用再自己手動操作Dom元素,來改變View的顯示,而是改變屬性後該屬性對應View層顯示會自動改變。