Vue源码学习笔记之实现双向数据绑定(一)--- 发布订阅模式

本文探讨Vue.js如何利用Object.defineProperty的setter/getter结合发布订阅模式实现双向数据绑定。通过深入理解发布订阅模式的概念、优点及简单实现,结合Vue源码,分析Vue中的依赖收集和通知订阅者更新视图的过程。
摘要由CSDN通过智能技术生成

首先看下vue官方文档中对于响应式原理说明的配图:

Vue.js 是采用 Object.defineProperty 的 getter 和 setter,并结合观察者模式来实现双向数据绑定的。当把一个普通 Js 对象传给 Vue 实例来作为它的 data 选项时,Vue 将遍历它的属性,通过用Object.defineProperty 设定对象属性的 setter/getter 方法来监听数据的变化,通过getter进行依赖收集,通过setter在数据变更的时候通知订阅者更新视图。

发布—订阅模式

最近又看了一遍《javaScript设计模式与开发实践》中的发布订阅模式,正好结合Vue源码做个总结。

概念:发布订阅模式又叫观察者模式,它定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都将得到通知。

优点

1. 时间上的解耦:发布-订阅模式可以广泛应用于异步编程中,这是一种替代传递回调函数的方案。

 2. 对象之间的解耦:发布-订阅模式让两个对象松耦合地联系在一起,相互通信不再需要显示的调用另外一个对象的接口。

简单的发布-订阅模式的实现

1. 首先要指定好谁充当发布者;

2. 然后给发布者添加一个缓存列表,用于存放回调函数以便通知订阅者;

3. 最后发布消息的时候,发布者会遍历这

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值