MVC淺談

mvc三個字母分別表明model, view, control.前端

下面從三個單詞來擴展說,編程

view顧名思義就是一個項目的圖形界面, gui部分.用戶能夠看到的, 進行操做的都在這上面.有圖形化界面的應用通常要求對用戶友好的, 簡單易用無端障的.可是最主要的是讓用戶經過界面操做去實現功能. 因此實現功能的部分須要一些操做, 包含操做過程當中的邏輯部分, 甚至是業務邏輯部分.那麼這部分就交給model去處理 ,可是這中間須要一個協調者, 去將不一樣的邏輯請求分給不一樣的model, 這個協調者就是controller.  因此綜上所述, view層進行操做以後, 調用請求給controller, controller會找到相應的model去實現業務邏輯, model進行邏輯層處理以後, 會通知view層去將處理結果顯示給用戶.在這裏通常view層會有一個result結果集去接收model的處理的數據.   這就是一個典型的MVC結構.後端

以下圖:瀏覽器

 

可是這裏的mvc結構過於耦合, 彼此之間的依賴關係太多.不便於開發進行單元測試. 因而下面介紹一個新的架構, MVVM.服務器

MVVM的核心是 view層的顯示變化是根據一個數據結構關聯綁定的. 這個數據結構一旦變化, 則view層顯示就會跟着相應的變化.因此這個view層和model層之間綁定的數據結構被稱爲VM.數據結構

一般來講VM被設計成爲一個屬性類.架構

圖之後補上.mvc

隨着技術發展, 愈來愈多的B/S架構的產品應運而生. 不少view層如今已經進入到了browser裏面. 用戶通常經過browser去進行一些操做.框架

而browser的操做通常都是經過get post的http去訪問server的指定url中的資源.  因此因爲編程模式的改變, 框架結構也發生了鉅變.post

若是把HTML頁面比做原來桌面應用程序的View, 服務器不管是Controller仍是Model都是沒法遠程遙控這個View進行處理的。傳統的MVC已經不能知足這種應用.通過研究後, 產生了下面的這種結構:

不像桌面應用的MVC, 這裏的Model無法給View 發通知。

實際上Controller 會選擇一個View, 而後把模型數據「丟過去」渲染。

原來的View 變成了 View Template(例如JSP , Velocity等等), 通過渲染後變成HTML發給瀏覽器展現給用戶。

 

有人把這種MVC稱爲 基於Web的 MVC,以便和以前的MVC區別開來。

是否是很是的贊.

後來因爲瀏覽器端的業務也變得逐漸複雜起來, 從全局刷新到局部刷新, 和單頁面應用程序等, 瀏覽器端也可使用框架.因此瀏覽器可使用一個框架, 服務器使用另外一個框架,

實現前端和後端徹底分離:

相關文章
相關標籤/搜索