1.1MVX模式是什么
MVC框架最早出现在Java领域,然后慢慢在前端开发中也被提到,后来又出现了MVP,以及现在最成熟的MVVM,下面我们来简单介绍一下各种模式。
1.1.1 MVC
MVC是应用最广泛的软件架构之一,一般MVC分为:
Model(模型)、Controller(控制器)和View(视图)。这主要是基于分层的目的,让彼此的职责分开,如图1-1所示。
View一般都是通过Controller来和 Model进行联系的。Controller是 Model和 View的协调
者,View和 Model不直接联系。基本联系都是单向的。
那么,用户操作应该放在什么位置,MVC 之间又会有什么变化,如图1-2所示。
用户(User)通过Controller来操作Model 以达到View的变化。
1.1.2MVP
MVP是从经典的MVC模式演变而来的,它们的基本思想有相通的地方:Controller/Presenter负责逻辑的处理,Model提供数据,View 负责显示。
在MVP中,Presenter完全把 View和 Model进行了分离,主要的程序逻辑在Presenter里实现。而且,Presenter与具体的View是没有直接关联的,而是通过定义好的接口进行交互,从而使得在变更View 的时候可以保持Presenter 不变。MVP通信方式如图1-3所示。
1.1.3MVVM
MVVM代表框架有:知名度相对偏低的Knockout、早期的Ember.js、目前比较火热的来自Google 的AngularJS,以及我们今天要讲的Vue.js。
相比前面两种模式,MVVM 只是把 MVC 的Controller和 MVP的 Presenter改成了ViewModel。View 的变化会自动更新到 ViewModel,ViewModel 的变化也会自动同步到View上显示。
这种自动同步是因为ViewModel中的属性实现了Observer,当属性变更时都能触发对应的操作,如图1-4所示。