为什么会出现 MVVM 呢?

我接触MVVM 是在2015年,可以说2015年是MVVM 最火热的一年,而在这之前,我所知道的就是MVC,  MVC 大约是在5年前,也就是2011年的时候接触的,那时候刚学编程语言,学的是Java,而Java 中的经典的 SSH 框架就用来构建一个标准的MVC 架构。说实话,MVC 架构用了这么多年,但始终没有很深刻的理解,只停留在用的层面, 一直到接触 Vue.js 之后,研究了MVVM 架构思想,然后再回头看 MVC ,才有一种豁然开朗的感觉~

MVC 即 Model-View-Controller 的缩写,就是 模型-视图-控制器 , 也就是说一个标准的Web 应用程式是由这三部分组成的: 

View 用来把数据以某种方式呈现给用户
Model 其实就是数据
Controller 接收并处理来自用户的请求,并将 Model 返回给用户

在HTML5 还未火起来的那些年,MVC 做为Web 应用的最佳实践是OK的,这是因为 Web 应用的View 层相对来说比较简单,前端所需要的数据在后端基本上都可以处理好,View 层主要是做一下展示,那时候提倡的是 Controller 来处理复杂的业务逻辑,所以View 层相对来说比较轻量,就是所谓的 瘦客户端 思想。

2010年到2011年,HTML5概念被热炒,受到追捧,2012年,W3C 正式宣布HTML5规范已经正式定稿。2013年我刚进公司就接触到了一个 HTML5 框架 Sench touch, Sench touch 是一款用来构建移动应用的HTML5 框架,它将前后端彻底分离,前端采用的是MVC 架构,作为一个独立的项目工程来维护。

为什么前端要工程化,要是使用MVC? 

相对 HTML4 ,HTML5 最大的亮点是它为移动设备提供了一些非常有用的功能,使得 HTML5 具备了开发App的能力, HTML5开发App 最大的好处就是跨平台、快速迭代和上线,节省人力成本和提交效率,因此很多企业开始对传统的App进行改造,逐渐用H5代替Native页面,到2015年的时候,市面上很多App 或多或少嵌入都了H5页面。

既然要用H5来构建 App, 那View 层所做的事,就不仅仅是简单的数据展示了,要管理数据,管理用户操作的各种状态,还要处理移动设备上用户各种操作行为等等。因此,前端也需要一个类似于MVC的框架来管理这些复杂的逻辑,使开发更加高效。 但此时的 MVC 又稍微发了点变化: