vue双向数据绑定原理?

Vue.js通过数据劫持和发布者-订阅者模式实现数据绑定。它使用Object.defineProperty监听数据变化,当数据更新时通知订阅者Watcher进行视图更新。Observer负责数据劫持,Dep管理订阅者,Compile则解析模板并创建订阅者。当订阅者接收到属性变更,会执行更新函数刷新视图。
摘要由CSDN通过智能技术生成

定义

vue是采用数据劫持结合发布者-订阅者模式来实现的,通过object.definedProperty来劫持各个属性的getter和setter,当数据发生变化的时候,发布消息给订阅者,然后触发相应的监听回调。

思路分析

数据更新,视图更新;视图更新,数据更新

通过Object.definedProtype来监听属性的变化,然后通过set方法来更新视图

实现过程

  • 想要实现数据的双向绑定,首先需要先对数据进行劫持监听,设置一个监听器Observer
  • 如果属性发生了变化,就需要告诉订阅者Watcher是否更新,由于订阅者并不止一个,所以我们需要一个消息订阅器Dep来专门收集这些订阅者,然后在监听器Observer和订阅者Watcher之间进行统一管理的
  • 然后还需要一个指令解析器Compile,来对每个节点元素进行扫描和解析,将相关指令对应初始化成一个订阅者Watcher,并替换模板数据或者绑定相应的函数
  • 此时当订阅者Watcher接收到相应属性的变化,就会执行对应的更新函数,从而更新视图。

流程图如下:
在这里插入图片描述

参考:https://zhuanlan.zhihu.com/p/78276361

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值