Vue源码分析之数据绑定Dep与Watcher的关系

本文探讨Vue框架中的数据绑定机制,重点分析Dep和Watcher的关系。数据绑定依赖于数据劫持技术,通过`defineProperty()`监听data中属性的变化。Dep在初始化时为每个属性创建,而Watcher在解析模板表达式时创建。两者间存在多对多关系,一个Dep可以关联多个Watcher,反之亦然。当属性值改变时,Dep通知其对应的Watcher进行界面更新。
摘要由CSDN通过智能技术生成

数据绑定

  • 数据绑定
  1. 一旦更新了data中的某个属性数据,所有界面上直接(this.xxx='aaa')或间接(计算属性或方法)使用了此属性的节点都会更新
  • 数据劫持
  1. 数据劫持是vue中用来实现数据绑定的一种技术
  2. 基本思想:通过defineProperty()来监视data中所有属性(任意层次)数据的变化,一旦变更就去更新界面

Dep与Watcher的关系

  1. Dep何时创建?—— 初始化时给data的属性进行数据劫持时创建的
  2. 有几个?—— 与data中的属性一一对应
  3. 结构是什么?—— id:标识,subs:[]相关的n个watcher容器

 

  1. Watcher何时创建?—— 初始化时解析大括号表达式/一般指令时创建
  2. 有几个?—— 与模板表达式(不包含事件指令)一一对应
  3. 结构是什么?
this.cb = cb  // 用于更新界面的回调
this.vm = vm  // vm
this.exp = exp  // 对应的表达式
this.depIds = {}  // 相关的n个dep容器对象
this.value = this.get()  // 当前表达式对应的value
  • 当执行vm.name='ab
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值