亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

MVC和MVVM有什么區別?

MVC和MVVM有什么區別?

慕萊塢森 2019-07-25 10:43:44
MVC和MVVM有什么區別?標準的“模型視圖控制器”模式與Microsoft的模型/視圖/ ViewModel模式之間是否存在差異?
查看完整描述

3 回答

?
白板的微信

TA貢獻1883條經驗 獲得超3個贊

我認為理解這些首字母縮略詞的最簡單方法是暫時忘掉它們。相反,考慮一下它們所源自的軟件。它實際上歸結為早期網絡和桌面之間的差異。

第一個首字母縮寫詞MVC起源于網絡。(是的,它可能曾經存在過,但網絡是如何向大量的Web開發人員推廣的。)想想數據庫,HTML頁面和代碼。讓我們稍微改進一下以獲得MVC:對于?database?,讓我們假設數據庫加接口代碼。對于?HTML pages?,我們假設HTML模板和模板處理代碼。對于?code inbetween?,讓我們假設代碼將用戶點擊映射到可能影響數據庫的操作,肯定會導致顯示另一個視圖。就是這樣,至少為了這個比較的目的。

讓我們保留這個網絡內容的一個特征,不像現在這樣,但是十年前它存在,當時JavaScript是一個卑微,卑鄙的煩惱,真正的程序員很好地避開了:HTML頁面本質上是愚蠢和被動的。瀏覽器是瘦客戶端,或者如果你愿意的話,是一個糟糕的客戶端。瀏覽器中沒有智能。整頁重新加載規則。每次都會重新生成?view?。

讓我們記住,這種網絡方式雖然風靡一時,但與桌面相比卻是非常落后的。如果您愿意,桌面應用程序是胖客戶端或富客戶端。(甚至像Microsoft Word這樣的程序也可以被認為是某種客戶端,文檔的客戶端。)他們是充滿智慧的客戶,充滿了關于他們數據的知識。他們是有狀態的。它們緩存了他們在內存中處理的數據。沒有這樣的廢話作為整頁重新加載。

這種豐富的桌面方式可能是第二個縮寫詞起源于MVVM的地方。不要被字母所愚弄,因為C的遺漏仍然存在。他們需要。什么都沒有被刪除。我們只添加一件事:有狀態,緩存在客戶端上的數據(以及處理該數據的智能)。該數據,實際上是客戶端上的緩存,現在稱為“ViewModel”。它允許豐富的交互性。就是這樣。

  • MVC =模型,控制器,視圖=基本上是單向通信=差的交互性

  • MVVM =模型,控制器,緩存,視圖=雙向通信=豐富的交互性

我們可以看到,使用Flash,Silverlight,以及 - 最重要的是 - JavaScript,網絡已經接受了MVVM。瀏覽器不能再被合法地稱為瘦客戶端??纯此麄兊目删幊绦???纯此麄兊挠洃浵摹2榭船F代網頁上的所有Javascript交互性。

就個人而言,我發現這個理論和首字母縮略詞業務通過查看它在具體現實中所指的內容更容易理解。抽象概念是有用的,特別是在具體問題上展示時,所以理解可能會完整。


查看完整回答
反對 回復 2019-07-25
?
紫衣仙女

TA貢獻1839條經驗 獲得超15個贊

MVVM 模型 - 視圖ViewModel類似于MVC,模型 - 視圖控制器

控制器將替換為ViewModel。ViewModel位于UI層下方。ViewModel公開視圖所需的數據和命令對象。您可以將此視為一個容器對象,該視圖用于獲取其數據和操作。ViewModel從模型中提取數據。

Russel East做了一個博客,詳細討論了 為什么MVVM與MVC不同


查看完整回答
反對 回復 2019-07-25
  • 3 回答
  • 0 關注
  • 1552 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號