MVC
MVC模式認為,程序不論簡單或復雜,從結構上看,都可以分成三層。
- 1,最上面的一層,是直接面向最終用戶的"視圖層"(View)。它是提供給用戶的操作界面,是程序的外殼。
- 2,最底下的一層,是核心的"數據層"(Model),也就是程序需要操作的數據或信息。
- 3,中間的一層,就是"控制層"(Controller),它負責根據用戶從"視圖層"輸入的指令,選取"數據層"中的數據,然后對其進行相應的操作,產生最終結果。
這三層是緊密聯系在一起的,但又是互相獨立的,每一層內部的變化不影響其他層。每一層都對外提供接口(Interface),供上面一層調用。這樣一來,軟件就可以實現模塊化,修改外觀或者變更數據都不用修改其他層,大大方便了維護和升級。
個人的簡單理解:
- Controller: controller中負責監聽view層中的事件,然后調用model中暴露出來的借口來進行改變數據,在controller中不能直接操作model中的數據。
- model: model中就是只操作數據,和dom沒有關系。進行數據的操作,然后暴露出一些接口給controller使用。
- view: 視圖層中的html以及占位符(例如{{number}})。
要注意的就是view和model層并不能直接相互控制,而是要交給controller來進行控制。
MVC中一定會有一個主動render()的操作,因為不會自動刷新頁面
MVVM
M: js內存 (deejay)
V: html/css 表現層
VM: 監聽model和view的變化,model發生改變之后隨著改變view,view改變了之后隨著改變Model,互相監聽,互相去改變。
MVVM的缺點
首先明確MVVM的改變是同步的,另外普通DOM的事件處理也是同步的。
同步造成的缺點就是:view每改動一次,model就會改變 ,VM中的每一次變化也都會重新渲染view,所以造成很大的性能問題。
而且如果view中有新增內容的話,model中沒有事先設置,是不能進行改變的。