Vue深入响应式原理(双向绑定原理)

    Vue用了快一年了,一直没有花时间去了解过它的原理,对于双向绑定这块,也只知道在项目中怎么使用。在网上百度了一波后,发现我有知识都没接触过,今天就来好好整理一下。

  我理解的Vue双向绑定的大致思路如下:

(1)Vue会使用documentfragment劫持根元素里包含的所有节点(这些节点包括标签元素、文本、换行的回车等)。

(2)Vue会把data中所有的数据,用definedProperty()变成Vue的访问器属性,这样每次修改这些属性的时候,就会触发相应属性的get,set方法。

(3)编译处理劫持到的dom节点,遍历所有节点,根据nodeType来判断节点类型,根据节点本身的属性(是否有v-model等属性)或者文本节点的内容(是否符合{{文本插值}}的格式)来判断节点是否需要编译。

(4)对v-model,绑定事件当输入的时候,改变Vue中的数据。对文本节点,将它作为一个观察者watcher放入观察者列表,当Vue数据改变的时候,会有一个主题对象,对列表中的观察者们发布改变的消息,观察者们更新自己,改变节点中的显示,从而达到双向绑定的目的。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值