為什么會出現 MVVM 呢???
MVC 即 Model-View-Controller 的縮寫,就是 模型—視圖—控制器,也就是說一個標準的Web 應用程式是由這三部分組成的:
-
View用來把資料以某種方式呈現給用戶 -
Model其實就是資料 -
Controller接收并處理來自用戶的請求,并將 Model 回傳給用戶
Web 應用的View 層相對來說比較簡單,前端所需要的資料在后端基本上都可以處理好,View 層主要是做一下展示,那時候提倡的是 Controller 來處理復雜的業務邏輯,所以View 層相對來說比較輕量,就是所謂的 瘦客戶端思想
這種 MVC 架構模式對于簡單的應用來看是OK 的,也符合軟體架構的分層思想, 但實際上,隨著H5 的不斷發展,人們更希望使用H5 開發的應用能和Native 媲美,或者接近于原生App 的體驗效果,于是前端應用的復雜程度已不同往日,今非昔比,這時前端開發就暴露出了三個痛點問題:
- 開發者在代碼中大量呼叫相同的 DOM API,處理繁瑣 ,操作冗余,使得代碼難以維護,
- 大量的DOM 操作使頁面渲染性能降低,加載速度變慢,影響用戶體驗,
- 當 Model 頻繁發生變化,開發者需要主動更新到View ;當用戶的操作導致 Model 發生變化,開發者同樣需要將變化的資料同步到Model 中,這樣的作業不僅繁瑣,而且很難維護復雜多變的資料狀態,
這時 MVVM 的出現,完美解決了以上三個問題,
MVVM模式??
MVVM是Model-View-ViewModel的縮寫,MVVM的設計原理是基于MVC的,所以說MVVM不算是一種創新,充其量是一種改造,這其中的ViewModel便是一個小小的創新

-
Model層代表資料模型,也可以在Model中定義資料修改和操作的業務邏輯(資料) -
View代表UI 組件,它負責將資料模型轉化成UI 展現出(視圖) -
ViewModel是一個同步View 和 Model的物件(橋梁)
在MVVM架構下,View 和 Model 之間并沒有直接的聯系,而是通過ViewModel進行互動,Model 和 ViewModel 之間的互動是 雙向 的, 因此 View 資料的變化會同步到 Model 中,而 Model 資料的變化也會立即反應到View 上,
ViewModel 通過雙向資料系結把 View 層和 Model 層連接了起來,而View 和 Model 之間的同步作業完全是自動的,無需人為干涉,因此開發者 只需關注業務邏輯,不需要手動操作DOM, 不需要關注資料狀態的同步問題,復雜的資料狀態維護完全由 MVVM 來統一管理,
Vue.js 是一個提供了 MVVM 風格的雙向資料系結的 Javascript 庫,專注于View 層,它的核心是 MVVM 中的 VM,也就是 ViewModel, ViewModel負責連接 View 和 Model,保證視圖和資料的一致性,這種輕量級的架構讓前端開發更加高效、便捷,
MVVM和MVC區別???
MVC和MVVM其實區別并不大,都是一種設計思想,主要就是MVC中Controller演變成MVVM中的viewModel,MVVM主要解決了MVC中大量的DOM 操作使頁面渲染性能降低,加載速度變慢,影響用戶體驗,
參考鏈接:
https://www.cnblogs.com/goloving/p/8520030.html
https://www.cnblogs.com/gaosong-shuhong/p/9253973.html
本文來自博客園,作者:不知名前端李小白,轉載請注明原文鏈接:https://www.cnblogs.com/libo-web/p/15735225.html
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/394979.html
標籤:其他
