MVC模式:
M: model - 模型層,數據的增刪改查,
V:view - 視圖層,前端頁面(html,javascript,css)
C: controller - 控制層,處理業務,包含了路由javascript
比方說如今有一個訂單,用戶要去下訂單要去支付,要去建立一個訂單,頁面上用戶觸發一個點擊事件下單,隨後頁面觸發一個事件,這個在頁面裏面就是一個view。隨後經過事件觸發之後,這個事件到達後端,後端在路由配置裏面會接收到用戶請求,用戶的請求請求到咱們的後端,要去執行哪個方法,要去執行哪個controller或者action,這個是由路由控制的。路由拿到用戶請求去分析後,其實就是一個request請求映射,映射到咱們某一個控制器那麼就會直接把用戶的請求丟到控制器,讓咱們的控制器去針對請求作相應的處理,這一層就是controller層,controller就是包含了路由和控制器,路由只用來處理用戶的請求,拿到請求,丟給下一個控制器,不作額外處理,僅僅負責頁面導向做用。這是侯,咱們頁面處理完畢,要針對訂單作保存,或者記錄日誌等這些數據,這些數據就會經過模型層Model作一個相應的增長操做,能夠增長一條日誌,能夠增長一條訂單等,這些數據保存到數據庫裏面,隨後作一個查詢操做,最後處理完以後,Model層查詢拿到數據後,也會返回數據給controller層,而後再一次進行相應的業務處理,包裝完數據後,拋給view,到頁面上作一個渲染。這樣一個過程就是MVC處理過程。
mvc圖解css
MVVM模式:
VIEW指的是整個視圖層裏面頁面html,MODEL就是每個頁面裏面所存在的一些數據,這些數據是什麼,好比說查詢一個訂單,訂單數據就是MODEL,它是一個JSON對象。用戶要去註冊或者修改我的信息,也就是說咱們全部的須要在頁面裏面去展現的去渲染的那些數據都是咱們的MODEL。
假設是之前的開發模式(js/jquery):html
用戶修改本身的我的信息,此時修改的時候,首先
要去得到一個用戶現有的我的信息,得到我的信息之後發送一個ajax到後端獲取一個相應的json對象,這個json對象此時在咱們的model裏面,在model裏面後,此時咱們須要把數據渲染到頁面裏面去,這個過程咱們會寫一個相應的方法,從model裏面獲取到相應的字段,比方說有用戶暱稱,性別等,得到後一個一個把他渲染到用戶組件裏面,這個過程就是之前的js/jquery的一種方式,當咱們把數據渲染到頁面裏面後,用戶要去修改提交,用戶修改咱們監聽用戶的一個動做,用戶修改了文本框,raido等一些數據後,咱們都會寫相應的方法把這些數據從新的封裝到咱們的model裏面去,這個過程咱們須要額外的寫一個方法的,固然咱們也能夠直接使用form的一個序列化,把form裏面的數據序列化成一個json對象,隨後再提交到後端去作一個修改的操做。
如今要使用mvvm的方式:前端
就再也不操做dom了,此時引入一個新的概念viewmodel,他是一個核心調度者或者是協調者,專門是在中間作一個數據的傳遞的一個工做。
比方說,如今咱們拿到一個用戶的數據後,咱們不是直接交給咱們的view去渲染,咱們會把相應的一個用戶數據丟給咱們的vm,讓他去作一個渲染的動做,隨後咱們的數據就能夠在咱們的HTML裏面去作到一個相應的渲染了。隨後用戶再到咱們的頁面裏面操做了其餘的dom的一些元素,修改了一些數據,這個時候開發者不用再寫額外的一些方法了,只要用戶修改了數據,那些相應的數據就會經過咱們的vm再一次的傳遞到咱們的model裏面去,這整一個雙向的動做都是由咱們的vm進行相應的處理。這就是數據的雙向綁定。
mvvm模式java