Vue-20190623点滴

Vue-20190623点滴

推荐黄奕同学vue的学习方式和过程。 https://juejin.im/post/5b18d2d7f265da6e410e0e20

 

♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣

☻☻☻☻ dom diff实现原理。

一种比较的比较好的算法,
一共分五步,
(1)、头部相同、尾部相同的节点:如1、10
(2)、头尾相同的节点:如2、9(处理完头部相同、尾部相同节点之后)(3)、新增的节点:11(4)、删除的节点:8(5)、其他节点:3、4、5、6、7

☻☻☻☻ vue怎么mvvm实现的机制。 https://segmentfault.com/a/1190000006599500

vue.js 是采用数据劫持结合发布者-订阅者模式的方式,通过Object.defineProperty()来劫持各个属性的setter,getter,在数据变动时发布消息给订阅者,触发相应的监听回调。
   在vue首先创建对象之后
(1)需要observe的数据对象进行递归遍历,包括子属性对象的属性,都加上 setter和getter
这样的话,给这个对象的某个值赋值,就会触发setter,那么就能监听到了数据变化。
在刚进入这个对象创建的时候,首先进行的就是遍历这个对象的data部分的遍及,遍历中创建observe对象,用defineproperty,对每一个对象进行数据劫持,这个数据劫持是同步的,只要你改变set和get方法,这个我感觉借鉴了java的这个思想,当data编辑完成后,这个时候生命周期进入到created中,开始进行,模版解析,
(2)compile解析模板指令,将模板中的变量替换成数据,然后初始化渲染页面视图,并将每个指令对应的节点绑定更新函数,在绑定事件的时候,引入了watch这个的类,watch每进行一次绑定,就会获取一次数据,触发一次get请求,然后在get函数中,触发一次订阅请求,放到一个数组里边,添加监听数据的订阅者,一旦数据有变动,收到通知,更新视图
(3)Watcher订阅者是Observer和Compile之间通信的桥梁,主要做的事情是:
      1、在自身实例化时往属性订阅器(dep)里面添加自己
      2、自身必须有一个update()方法
      3、待属性变动dep.notice()通知时,能调用自身的update()方法,并触发Compile中绑定的回调,则功成身退。
 (4) MVVM作为数据绑定的入口,整合Observer、Compile和Watcher三者,通过Observer来监听自己的model数据变化,通过Compile来解析编译模板指令,最终利用Watcher搭起Observer和Compile之间的通信桥梁,达到数据变化 -> 视图更新;视图交互变化(input) -> 数据model变更的双向绑定效果。
这里,我们还有一点疑惑,为什么getset是同步的而我们发现操作vue的模版变化到vue的视图更新却是一部的呢。这个尤大大做的处理。
View Code

☻☻☻☻ vue proxy与Object.definePropy的区别和联系。

https://juejin.im/post/5bf3e632e51d452baa5f7375

 ♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣

 

 

转载于:https://www.cnblogs.com/coding4/p/11074870.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值