摘要:模式的目的是實現動態的程序設計,簡化程序后續的修改和擴展過程,并且使模塊能夠被重復利用。視圖的可視化表示,表示當前狀態的視圖。出現于年,最大變化在于代替了。其關鍵改進是數據綁定,也就是說,的數據狀態發生變化可以直接影響,反之亦然。
MV模式的目的是實現動態的程序設計,簡化程序后續的修改和擴展過程,并且使模塊能夠被重復利用。此模式通過簡化程序使之變得更為直觀。MV不是一種技術 ,而是一種設計理念。MV*模式主要采用分層的思想來降低耦合度,從而使系統更加靈活,擴展性更強。它通過關注數據界面分離,來鼓勵改進應用程序結構。
常見的兩種MV*模式是MVC和MVVM,他們具有一些相同點:
Model(模型):負責保存應用數據,和后端交互同步應用數據,或校驗數據。Model不涉及用戶界面,也不涉及表示層,而是代表應用程序可能需要的獨特形式的數據。當Model改變時,它會通知它的觀察者(如視圖)作出相應的反應。總的來說,Model 主要與業務數據有關,與應用內交互狀態無關。
View(視圖):Model 的可視化表示,表示當前狀態的視圖。前端View負責構建和維護DOM元素。
View 對應用程序中的 Model 和 Controller 的了解是有限的,更新 Model 的實際任務都是在 Controller 上。
用戶可以與 View 交互,包括讀取和編輯 Model,在 Model 中獲取或設置屬性值。
不同點在于:
Controller(控制器):是應用程序中處理用戶交互的部分。通常控制器負責從視圖讀取數據,控制用戶輸入,并向模型發送數據。
VM(視圖模型):通過數據綁定,自動完成M、V之間的更新
那么究竟兩者有什么區別?
如圖,實線代表方法調用,虛線代表事件通知。
MVC允許在不改變視圖的情況下改變視圖對用戶輸入的響應方式,用戶對View的操作交給了Controller處理,在Controller中響應View的事件調用Model的接口對數據進行操作,一旦Model發生變化便通知相關視圖進行更新(觀察者模式)。
這張圖把MVC分為三個獨立的區域,你瞧C和V以及C和M之間的白線,一部分是虛線一部分是實線對吧,這就表明了引用關系:C可以直接引用V和M,而V和M不能直接引用C,至少你不能顯式的在V和M的代碼中去寫和C相關的任何代碼,而V和M之間則是雙黃線,沒錯,它們倆誰也不能引用誰,你既不能在M里面寫V,也不能在V里面寫M。
但是,MVC框架允許View和Model直接進行通信!所以,可能會出現特別混亂的情況出現!以Backbone 為例,由于 Model 對外直接暴露了 set 和 on 方法,導致 View 層可以隨意改變 Model 中的值,也可以隨意監聽 Model 中值的變化。
MVVM 出現于 2005 年,最大變化在于 VM(ViewModel)代替了 C(Controller)。其關鍵“改 進”是數據綁定(DataBinding),也就是說,View 的數據狀態發生變化可以直接影響 VM,反之 亦然。這也可以說是 AngularJS 的核心特色之一。
MVVM框架與MVC框架的主要區別有兩點:
1、實現數據與視圖的分離
2、通過數據來驅動視圖,開發者只需要關心數據變化,DOM操作被封裝了。
MVVM的實現主要是三個核心點:
響應式:vue如何監聽data的屬性變化(Object.defineProperty)
模板解析:vue的模板是如何被解析的
渲染:vue模板是如何被渲染成HTML的
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/105760.html
摘要:所以我查了很多的材料,希望能從自己的角度上用通俗的語言闡述前端框架的演變。現在,前端頁面會有很多復雜的交互邏輯和用戶體驗,如果還使用之前老的框架,對層的操作就會難以維護,這就是前端框架要不斷演變的主要原因。 說實在的,我不覺得MVC,MVVM這些框架有什么難的,直到我想寫一篇文章去系統的闡述它們。我遇到了以下幾個問題,1.不同的文章說的南轅北轍 2.沒有一個清晰的大綱和框架分類。所以我...
摘要:所以我查了很多的材料,希望能從自己的角度上用通俗的語言闡述前端框架的演變。現在,前端頁面會有很多復雜的交互邏輯和用戶體驗,如果還使用之前老的框架,對層的操作就會難以維護,這就是前端框架要不斷演變的主要原因。 說實在的,我不覺得MVC,MVVM這些框架有什么難的,直到我想寫一篇文章去系統的闡述它們。我遇到了以下幾個問題,1.不同的文章說的南轅北轍 2.沒有一個清晰的大綱和框架分類。所以我...
摘要:還有一點比較重要的是,如何在快速迭代的軟件開發周期內,去解放生產力。于是就會大量涌現很多優秀的開源框架和擴展庫,去解決現實生活中的實際問題。而這一切都是在朝著提高開發效率,降低維護成本而前進。結合書中的觀點去總結和思考。 關于 Vue.js showImg(https://segmentfault.com/img/bVbk73v?w=252&h=253); 簡單小巧的核心(代碼壓縮后大...
摘要:還有一點比較重要的是,如何在快速迭代的軟件開發周期內,去解放生產力。于是就會大量涌現很多優秀的開源框架和擴展庫,去解決現實生活中的實際問題。而這一切都是在朝著提高開發效率,降低維護成本而前進。結合書中的觀點去總結和思考。 關于 Vue.js showImg(https://segmentfault.com/img/bVbk73v?w=252&h=253); 簡單小巧的核心(代碼壓縮后大...
閱讀 1303·2021-11-11 10:57
閱讀 3717·2021-09-07 10:10
閱讀 3442·2021-08-03 14:03
閱讀 3067·2019-08-30 13:45
閱讀 681·2019-08-29 11:19
閱讀 1039·2019-08-28 18:07
閱讀 3100·2019-08-26 13:55
閱讀 809·2019-08-26 12:17