本文只帮助于理解vue2.0怎么做到事件绑定、双向数据绑定、vue底层处理
Vue与React、Angular的不同是,但它是渐进的
使用Angular,必须接受以下东西
1、必须使用它的模块机制
2、必须使用它的依赖注入
3、必须使用它的特殊形式定义组件
使用React,你必须理解
1、函数式编程的理念
2、需要知道它的副作用
3、什么是纯函数
4、如何隔离、避免副作用
在Vue初始化时会根据id获取dom对命令进行解析
解析on
命令,实现事件注册
将on指令进行切割去除
on:click
中的click进行事件注册
JavaScript// 将on命令根据dom进行注册(node为dom) eventHandler: function(node, vm, exp, dir) { var eventType = dir.split(':')[1], fn = vm.$options.methods && vm.$options.methods[exp]; if (eventType && fn) { node.addEventListener(eventType, fn.bind(vm), false); } },
解析v-model
将v-model命令注册进入input监听中
JavaScriptnode.addEventListener('input', function(e) { var newValue = e.target.value; if (val === newValue) { return; } me._setVMVal(vm, exp, newValue); val = newValue; });
如何做到input监听与html中input相互绑定呢???
当数据发生改变时会将新数据塞入dom中
在vue初始化时会将dom
,options
,一起传入
options : {data,methods,...}
将options
函数中的数据注入defineProperty进行get
,set
,同时将data
对象中注入计算
javascript///me : this
Object.defineProperty(me, key, {
configurable: false,
enumerable: true,
get: function proxyGetter() {
return me._data[key];
},
set: function proxySetter(newVal) {
me._data[key] = newVal;
}
});
计算属性的实现
获取到options
中的key,在Object.defineProperty
进行get返回即可
将options
传入监听者Observer
进行Object.defineProperty
监听,并同时初始化订阅者Dep
,当数据发生变化时会通知订阅者
将dom
中传入命令解析器中对命令进行解析,详情看[根据dom获取对HTML进行解析]
将数据放入Object.defineProperty
中,并添加进入订阅者集合,
当数据发生变化时,会通知订阅者进行处理
当监听者通知订阅者时,订阅者将数据产生变化传递给观察者
然后根据订阅者集合中数据进行数据更新
在mvvm
初始化时同步将options
传入了观察者,当数据通知到观察者是,就会进行数据更新,进而达到了数据监听的目的
watch
本文作者:还是夸张一点
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!