observer,watcher,dep关系

  1. Observer(观察者)

    • Observer 是 Vue.js 中用于监测数据变化的核心模块之一。
    • Observer 会递归地遍历数据对象,将对象的每个属性都转换为 getter/setter,并且给每个属性都创建一个对应的 Dep 实例。
    • Observer 监听到数据的变化后,会通知对应的 Dep 对象,并触发相应的更新操作。
  2. Watcher(观察者)

    • Watcher 是 Vue.js 中用于监听数据变化并执行相应操作的对象。
    • Watcher 会被添加到数据的依赖收集器中,以便在数据发生变化时能够得到通知。
    • Watcher 对象包含一个回调函数,在数据变化时会执行该回调函数。
    • Watcher 对象会在初始化时,根据表达式创建对应的 getter,并在初始化时触发一次数据的获取操作,从而建立起依赖关系。
  3. Dep(依赖收集器)

    • Dep 是 Vue.js 中用于管理依赖关系的对象。
    • Dep 对象用来存储 Watcher 对象,并在数据发生变化时通知对应的 Watcher 执行更新操作。
    • 每个数据属性都会有一个对应的 Dep 实例,用于存储该属性的依赖关系。

关系如下:

  • 在数据初始化阶段,Observer 会递归地遍历数据对象,并为每个属性创建 getter/setter。
  • 当 Watcher 对象被创建时(比如在组件渲染或使用 watch 选项时),会将 Watcher 添加到数据的依赖收集器中,同时创建对应的 getter,并在初始化时触发一次数据的获取操作,建立依赖关系。
  • 在数据属性的 getter 中,会将当前 Watcher 对象添加到对应的 Dep 实例中,建立起 Watcher 与 Dep 之间的关系。
  • 当数据属性发生变化时,Observer 会通知对应的 Dep 实例,Dep 实例会通知所有的 Watcher 对象执行更新操作。

总的来说,Observer 负责将数据转换为响应式的对象,Watcher 负责监听数据变化并执行相应的操作,Dep 则负责管理 Watcher 对象和通知 Watcher 执行更新操作,三者共同构成了 Vue.js 响应式系统的核心。

watch 在初始化阶段,要是模板中有 watch选项,就会进行添加watcher处理,还有定义computed的时候,再一个是 模板渲染的时候

待续

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值