web面試MVC與MVVM區別及Vue為什麼不完全遵守MVVM解答
MVC和MVVM區別
前述
首先, 這兩種都隻是一種思想, 一種設計模式
很多編程語言根據這種思想設計出瞭很多框架, 例如Java中的SpringMVC, PHP中的ThinkPHP , JavaScript中的Vue、React、Angular等
MVC
概述
1.數據要渲染到視圖上
定義一個模板引擎
得到數據
再將數據渲染到模板引擎中
2.視圖操作控制器
在頁面上的按鈕中添加點擊事件
在事件中調用方法
控制器再發送請求去修改數據
3.通過方法發送網絡請求修改數據
再發送網絡請求得到修改後的數據
再將數據渲染到視圖上
優缺點
優點:
降低耦合,便於代碼的維護和擴展
缺點:
每次數據更新之後,都需要操作dom, 影響開發效率;
MVVM
概述
前言
為瞭提高開發效率,出現瞭新的思想:MVVM。它最大的特點:雙向數據綁定;
當M中的數據發生改變時,V中的數據會自動發生改變當V中的數據發生改變時,M中的數據會自動發生改變;
MVVM是MVC的進步, 是MVC的替代品。
特點:
當M改變時,V會自動改變當V改變時,M會自動改變
關系:
一旦M改變,VM會檢測會M的變化,會自動去修改V
一旦V改變, VM會檢測到V的變化,會自動去修改M
有瞭MVVH之後,所有的dom操作都是由vm來操作,減少瞭程序員工作量,程序員就可以將大量的時間用在業務邏輯上,而不是dom操作上。
MVVM實現者 — Vue
Vue為什麼沒有完全遵守MVVM?
原話來源於Vue官網作者自述, 但是作者並沒有給出原因, 根據查閱和自己整理, 認為有2點原因
原因一: mvvm是指 “模型-視圖-視圖模型”, 應該是讓”模型”和”視圖”實現完全的解耦, 但是vue中提供瞭一個屬性: ref, 通過ref可以拿到dom對象,通過ref直接去操作視圖。這一點上,違背瞭mvvm;
原因二: 如下圖, 結構上, “數據層”包含在瞭”數據模型層”, 這兩個部分沒有完全獨立出來
以上就是web面試MVC與MVVM區別及Vue為什麼不完全遵守MVVM解答的詳細內容,更多關於MVC與MVVM的資料請關註WalkonNet其它相關文章!
推薦閱讀:
- Vue之前端體系與前後端分離詳解
- 初識React及React開發依賴詳解
- Vue.js React與Angular流行前端框架優勢對比
- 詳細聊聊Vue.js中的MVVM
- 關於net 6+vue 插件axios 後端接收參數問題