談?wù)勀銓?duì)MVVM的理解
【答案】
MVVM 由 Model、View、ViewModel 三部分構(gòu)成
- Model 代表數(shù)據(jù)模型巍沙,也可以在 Model 中定義數(shù)據(jù)修改和業(yè)務(wù)邏輯神凑;
- View 代表 UI 組件,它負(fù)責(zé)將數(shù)據(jù)模型轉(zhuǎn)化成 UI 展現(xiàn)出來智亮;
- ViewModel 是一個(gè)同步View 和 Model的對(duì)象;
[擴(kuò)展問題]:為什么會(huì)出來MVVM
當(dāng)業(yè)務(wù)程度越來越復(fù)雜時(shí)点待,MVC暴露出了很多問題阔蛉,而MVVM就是為了解決這些問題出現(xiàn)的
當(dāng)前端發(fā)展起來后,這時(shí)前端開發(fā)就暴露出了三個(gè)痛點(diǎn)問題:
- 開發(fā)者在代碼中大量調(diào)用相同的 DOM API, 處理繁瑣 癞埠,操作冗余状原,使得代碼難以維護(hù)。
- 大量的DOM 操作使頁面渲染性能降低燕差,加載速度變慢遭笋,影響用戶體驗(yàn)。
- 當(dāng) Model 頻繁發(fā)生變化徒探,開發(fā)者需要主動(dòng)更新到View 瓦呼;當(dāng)用戶的操作導(dǎo)致 Model 發(fā)生變化,開發(fā)者同樣需要將變化的數(shù)據(jù)同步到Model 中,這樣的工作不僅繁瑣央串,而且很難維護(hù)復(fù)雜多變的數(shù)據(jù)狀態(tài)磨澡。
其實(shí),早期 jquery 的出現(xiàn)就是為了前端能更簡(jiǎn)潔的操作 DOM 而設(shè)計(jì)的质和,但它只解決了第一個(gè)問題稳摄,另外兩個(gè)問題始終伴隨著前端一直存在。 MVVM 的出現(xiàn)饲宿,完美解決 了 以上三個(gè)問題 厦酬。
[擴(kuò)展問題]:什么是MVC
- MVC 是 Model-View-Controller 的縮寫,即 模型—視圖—控制器 瘫想。
- Model:后端傳遞的 數(shù)據(jù) 仗阅。
- View:所看到的 頁面 。
- Controller:頁面 業(yè)務(wù)邏輯 国夜。
MVC是 單向通信 减噪。即View和Model,必須通過Controller來承上啟下车吹。
使用MVC的 目的 就是 將M和V的代碼分離 筹裕。
[擴(kuò)展問題]:MVC和MVVM的關(guān)系
MVVM是將之前的MVC后端開發(fā):
- M:model數(shù)據(jù)庫(kù)中的數(shù)據(jù)
- V:view前端頁面
- C:controller后端控制器
中的V即View分成了MVVM模式
MVVM模式:不需要用戶手動(dòng)的操作dom的,主要是實(shí)現(xiàn)數(shù)據(jù)雙向綁定
[擴(kuò)展問題]:VUE和MVVM的關(guān)系
Vue.js 可以說是MVVM 架構(gòu)的最佳實(shí)踐窄驹,VUE并沒有完全遵循MVVM朝卒,專注于 MVVM 中的 ViewModel,不僅做到了數(shù)據(jù)雙向綁定馒吴,而且也是一款相對(duì)比較輕量級(jí)的JS 庫(kù)扎运,API 簡(jiǎn)潔,很容易上手
歡迎留言~~~