vue2.0 是如何实现响应式的?

Posted 阿冰介

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vue2.0 是如何实现响应式的?相关的知识,希望对你有一定的参考价值。

核心:Object.defineProperty 实现数据【响应式系统】

简述:类似于读者-书店-图书 的关系,读者通过书店提供的订阅信息找到图书,图书发生改变,书店也会触发监听给书店,让读者知道图书改变的信息

  • Vue 中模板编译过程中的指令或者数据绑定都会实例化一个 Watcher 实例,实例化过程中会触发 get() 将自身指向 Dep.target;

  • data在 Observer 时执行 getter 会触发 dep.depend() 进行依赖收集;依赖收集的结果:1、data在 Observer 时闭包的dep实例的subs添加观察它的 Watcher 实例;2. Watcher 的deps中添加观察对象 Observer 时的闭包dep;

  • 当data中被 Observer 的某个对象值变化后,触发subs中观察它的watcher执行 update() 方法,最后实际上是调用watcher的回调函数cb,进而更新视图。

以上是关于vue2.0 是如何实现响应式的?的主要内容,如果未能解决你的问题,请参考以下文章

手写MVVM的实现原理

vue2.0源码分析之理解响应式架构

vue2.0源码解析(上)

再读vue2.0

如何实现 font-size 的响应式

☀️Vue2.0为什么不能检查数组的变化?又该如何解决?