Vue源码阅读——MVVM原理Observe、watcher、dep
- 一直在使用Vue,但是却是不知道双向绑定的具体原理Vue是怎么实现的,比如只知道Object.defineProperty();
- 在实习的项目中有时候会遇到的问题就是,从后台获取到的数据res存到data里面,然而你需要改变res里面存在的数据比如res里面有一个items对象数组,你为数组里面的一个对象添加之前不存在的字段的时候,视图并不会实时更新;因为Vue并没有通过render去更新DOM树的内容;
- 在vue的文档里面指出,vue的双向绑定只会响应data里面有的数据字段,以及子元素;动态添加的元素需要使用Vue.$set(obj, key, value)来添加;

在Vue中,MVVM的实现是在src/core/observer/index watcher dep中,这是主要的核心代码,index定义了Observer,每个Observer初始化的时候都会创建一个收集器Dep,然后通过walk()初始化,walk的调用是对函数defineReactive()
|
|
思维导图:
参考: