MVVM框架主要包含3个部分:model、view和 viewmodel。 Model:指的是数据部分,对应到前端就是javascript对象View:指的是视图部分,对应前端就是domViewmodel:就是连接视图与数据的中间件1.双向数据绑定的实现方式简单的来说,就是框架的控制器层(这里的控制器层是一个泛指,可以理解为控制view行为和联系model层的中间件)和UI展示层(view层)建立一个双向的数据通道。当这两层中的任何一方发生变化时,另一层将会自动作出相应的变化。 一般来说要实现这种双向数据绑定,在前端我目前了解的有三种形式: 基于脏检查 angular,regular(网易开发)观察机制封装属性访问器2.基于脏检查目前angular,regular的实现都是基于脏检查。当发生某些特定的事情的时候,框架会调用相关的digest方法。内部逻辑就是遍历所有的watcher,对监控的属性做对比。如果值发生了变化,则执行相应的handler。 2.1基于regular详细介绍一下:watcher对象看起来是这样的: { get: function(context){...} //获得表达式当前求值,此函数在解析时,已经生成 set: function(){} // 有些表达式可以生成set函数,用于处理赋 值,这个一般用于双向绑定的场景 once: