在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开发者,在两者之间作出何种选择是显而易见的。