美文网首页
Vue2.x响应式数据/双向绑定原理

Vue2.x响应式数据/双向绑定原理

作者: 时间的溺水者 | 来源:发表于2020-05-28 10:00 被阅读0次

Vue 数据双向绑定主要是指:数据变化更新视图,视图变化更新数据。其中,View变化更新Data,可以通过事件监听的方式来实现,所以 Vue数据双向绑定的工作主要是如何根据Data变化更新View。

简述

1、当你把一个普通的 JavaScript 对象传入 Vue 实例作为 data 选项,Vue 将遍历此对象所有的 property,并使用 Object.defineProperty 把这些 property 全部转为 getter/setter。

2、这些 getter/setter 对用户来说是不可见的,但是在内部它们让 Vue 能够追踪依赖,在 property 被访问和修改时通知变更。

3、每个组件实例都对应一个 watcher 实例,它会在组件渲染的过程中把“接触”过的数据 property 记录为依赖。之后当依赖项的 setter 触发时,会通知 watcher,从而使它关联的组件重新渲染。

image.png
深入理解

1、监听器 Observer:对数据对象进行遍历,包括子属性对象的属性,利用 Object.defineProperty() 对属性都加上 setter 和 getter。这样的话,给这个对象的某个值赋值,就会触发 setter,那么就能监听到了数据变化。

2、解析器 Compile:解析 Vue 模板指令,将模板中的变量都替换成数据,然后初始化渲染页面视图,并将每个指令对应的节点绑定更新函数,添加监听数据的订阅者,一旦数据有变动,收到通知,调用更新函数进行数据更新。

3、订阅者 Watcher:Watcher 订阅者是 Observer 和 Compile 之间通信的桥梁 ,主要的任务是订阅 Observer 中的属性值变化的消息,当收到属性值变化的消息时,触发解析器 Compile 中对应的更新函数。每个组件实例都有相应的 watcher 实例对象,它会在组件渲染的过程中把属性记录为依赖,之后当依赖项的 setter 被调用时,会通知 watcher 重新计算,从而致使它关联的组件得以更新——这是一个典型的观察者模式

4、订阅器 Dep:订阅器采用 发布-订阅 设计模式,用来收集订阅者 Watcher,对监听器 Observer 和 订阅者 Watcher 进行统一管理。

相关文章

  • VUE(面试题)

    1、vue双向绑定原理vue2.x:vue双向绑定的原理是利用了Object.defineProperty()这个...

  • 简单实现Vue响应式原理@郝晨光

    前言 Vue的数据双向绑定,响应式原理,其实就是通过Object.defineProperty()结合发布者订阅者...

  • Vue实现双向数据绑定Proxy和defineproperty区

    一、实现mvvm的双向绑定原理 1.Vue三要素 响应式: 例如如何监听数据变化,其中的实现方法就是我们提到的双向...

  • (二)Vue-模拟实现响应式

    数据驱动 数据响应式、双向绑定、数据驱动 数据响应式数据模型仅仅是普通的 JavaScript 对象,而当我们修改...

  • Vue响应式原理/双向数据绑定

    一句话概括:采用数据劫持结合发布-订阅模式,通过 Object.defineproperty 来劫持各个属性的 s...

  • Vue.js响应式原理

    数据驱动 在我们学习Vue.js的过程中,我们经常看到三个概念 数据驱动 数据响应式 双向数据绑定 核心原理分析 ...

  • vue的优势

    vue是单页面应用,页面局部刷新 ,响应的数据绑定/响应式编程,组件化,轻量级框架,简单易学,双向数据绑定,视图数...

  • Vue

    vue双向绑定原理及实现从零带你手把手实现Vue3响应式原理-上从零带你手把手实现Vue3响应式原理-下为什么说 ...

  • 双向数据绑定原理(也叫数据响应式原理)

    (1)第一种方法:{vue2.x的方法(不支持ie8,vue不考虑ie8)} Object.definePrope...

  • vue数据双向绑定

    参考文章 深入响应式原理 剖析Vue原理&实现双向绑定MVVM 当你把一个普通的 JavaScript 对象传给 ...

网友评论

      本文标题:Vue2.x响应式数据/双向绑定原理

      本文链接:https://www.haomeiwen.com/subject/pexxzhtx.html