首页 > 其他 > 详细

Vue—12—框架的一些原理比如响应式等;

时间:2021-09-07 03:11:08      阅读:16      评论:0      收藏:0      [点我收藏+]

 

vue是如何实现响应式的?

首先通过object.defineProperty方法获取实时改变的值;

然后通过订阅者模式将值推送给所有用到此值的属性上;

主要是发布者订阅者模式;

 

 

技术分享图片

 

 

在new  vue实例时,在数据还没发生改变时,

  1. 首先到了complie这一步,我们开始渲染el所绑定的html模板,然后发现有{{}}语法,
  2. 然后会将本{{}}的id标识为一个订阅者,并new一个watcher实例(id为初始化时的形参),在new类watcher时,构造方法里会调用本身的update方法,update方法会使用object.defineProperty方法里的get方法将data里的初始值绑定到里面
  3. 但是get方法里有一个dep.addSubs(watcher)的方法,所以watcher即订阅者被加入到了dep的数组中;

在数据发生改变时,

  1. 首先通过obj.defineProperty实时监听改变了属性,并将新值赋值给属性
  2. 其次通过dep对象里,保存的订阅者数组subs,通过数组subs里的每个元素(订阅者)的notify()方法,将所有的属性的新值推送给用到了这个属性的{{}}id;

Vue—12—框架的一些原理比如响应式等;

原文:https://www.cnblogs.com/EricShen/p/15232768.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!