1. 程式人生 > >MVC與MVVM

MVC與MVVM

MVVM模式和MVC模式一樣,主要目的是分離檢視(View)和模型(Model)

MVVM?

M=>Model, V=>View, VM=>ViewModel
(Model View ViewModel) 模型,檢視,檢視模型
是對MVC的改進
(控制器:主要負責和檢視相關的業務邏輯,比如:使用者的輸入,給使用者顯示資料,控制DOM)

MVVM(Model-View-ViewModel)框架的由來便是MVP(Model-View-Presenter)模式與WPF結合的應用方式時發展演變過來的一種新型架構框架

用JavaScript在瀏覽器中操作HTML,經歷了若干發展階段:

第一階段,直接用JavaScript操作DOM節點,使用瀏覽器提供的原生API:

var dom = document.getElementById('name');
dom.innerHTML = 'Homer';
dom.style.color = 'red';

第二階段,由於原生API不好用,還要考慮瀏覽器相容性,jQuery橫空出世,以簡潔的API迅速俘獲了前端開發者的芳心:

$('#name').text('Homer').css('color', 'red');

第三階段,MVC模式,需要伺服器端配合,JavaScript可以在前端修改伺服器渲染後的資料。

現在,隨著前端頁面越來越複雜,使用者對於互動性要求也越來越高,想要寫出Gmail這樣的頁面,僅僅用jQuery是遠遠不夠的。MVVM模型應運而生。

MVVM最早由微軟提出來,它借鑑了桌面應用程式的MVC思想,
在前端頁面中,把Model用純JavaScript物件表示,View負責顯示,兩者做到了最大限度的分離。

把Model和View關聯起來的就是ViewModel。ViewModel負責把Model的資料同步到View顯示出來,還負責把View的修改同步回Model。

MVVM的設計思想:關注Model的變化,讓MVVM框架去自動更新DOM的狀態,從而把開發者從操作DOM的繁瑣步驟中解脫出來!

MVC?

(model view Controller) 模型, 檢視,控制器
模型:資料模型,主要負責提供資料的,在vue中可把data屬性當成模型或者生命週期鉤子提供ajax技術從介面層獲得資料。
檢視

:資料展示的頁面或容器,在vue中可把根例項對應的<div id="app">容器當成檢視,或者把元件中的template屬性當做檢視,或者把元件所對應的檢視模板<script id="tpl" type="text/html">當成檢視
控制器:是把模型和檢視連結起來的“橋樑”,在vue可把el屬性當成控制器