# MVX 模型
# MVC
- 视图
view
:展示数据,一般没有业务逻辑,有时为了实现刷新功能,需要在监视的数据模型上注册监视器 - 控制器
Controller
:处理事件并做出响应- 用户行为
- 数据模型变化
- 模型
Model
:封装和应用程序的业务逻辑相关的数据和数据的处理方法- 可以直接访问数据,例如对数据库的访问
- 不依赖
View Controller
各部分的通信方式:

基于 MVC
理念的简易实现:
/** 模拟 Model, View, Controller */
var M = {},
V = {},
C = {};
/** Model 负责存放资料 */
M.data = "hello world";
/** View 负责将资料输出给用户 */
V.render = (M) => {
alert(M.data);
};
/** Controller 作为连接 M 和 V 的桥梁 */
C.handleOnload = () => {
V.render(M);
};
/** 在网页读取的时候呼叫 Controller */
window.onload = C.handleOnload;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
业界实现:
MFC
Java
J2EE
Swing
.NET
ASP.NET
ASP.NET MVC
Windows Forms
Python
Django
TurboGears
JavaScript
Backbone.js
Angular.js
Ember.js
# MVVM

- 模型
Model
:数据访问层 - 视图
View
:用户界面 - 视图模型
ViewModel
:通过数据绑定来实现视图和模型之间通信
# 区别
用 ViewModel
替代了 Controller
利用数据双向绑定减少了更新状态的逻辑复杂度