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的时候,再一个是 模板渲染的时候

待续

  • 11
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue的Watcher是一个观察者对象,它负责监听数据的变化并执行相应的回调函数。使用Watcher可以观察属性的变化并执行自定义操作,同时还可以访问该属性在变化之前的旧值和变化之后的新值。在Vue中,WatcherObserverDep之间的桥梁,每个Observer对应一个Dep,它内部维护一个数组,保存与该Observer相关的Watcher。通过使用Composition API,我们可以将观察者分配给自定义变量,然后调用该变量来停止观察者。例如,可以使用watch函数来创建一个观察者,并通过传递一个回调函数来定义观察者的行为。可以使用unwatch函数来停止观察者的执行。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [理解 Vue 中的观察者](https://blog.csdn.net/weixin_47967031/article/details/127337694)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [sport应用](https://blog.csdn.net/psobb24/article/details/108270269)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值