在Web中充斥着所謂的MVC框架,而在我看來,由於一些關鍵性的技術緣由,MVC在Web前端開發中根本沒法使用(對的,是沒法,而不是不應) 。前端
在MVC原始報告中指出:編程
view永遠不會知道用戶輸入,好比鼠標操做和按鍵。架構
很顯然,在Web前端,你沒法作到這一點,由於Web的程序中,用戶的輸入必須經過監聽窗口、文檔和元素上的事件來得到。——而這些東西經常被認爲是View。框架
因而一些奇怪的認識誕生了,好比認爲Controller應該是View操做Model的中介。編程語言
John Gossman(WPF的架構師)在他的文章中提到,編碼
Model/View/ViewModel中的View表示可見元素,按鈕,窗體,圖形或者GUI中更復雜的控件,它會對快捷鍵進行編碼,而且控件自身會管理跟輸入設備的交互——這在MVC中本該是Controller負責的(現代GUI環境中發生在Controller上的事情是很長的題外話……我傾向於認爲它只是隱藏到後臺了,它仍然存在,可是咱們不須要像是1979年那樣考慮那麼多事情了)設計
MVC這樣的結構的正確性在於,任何界面都須要面對一個用戶,而Controller 「是用戶和系統之間的連接」。在經典MVC中,Controller要作的事情多數是派發用戶輸入給不一樣的View,而且在必要的時候從View中獲取Editor來更改Model,而Web以及絕大多數如今的UI系統中,Controller的職責已經被系統實現了。下面的圖片說明了這樣的演進過程:blog
總而言之,對於MVC事件
對於MVVM圖片
做爲一個Web開發者,在兩者之間作出何種選擇是顯而易見的。