Vue.js 源码学习笔记 - 细节

 

 1. this._eventsCount = { }    这是为了避免不必要的深度遍历:

 在有广播事件到来时,如果当前 vm 的 _eventsCount 为 0

 则不必向其子 vm 继续传播该事件。 

 

2.

数据更新的diff机制


视图更新效率的焦点问题: 大列表的更新 和 深层数据更新

而大列表较为常见


repeat.js


首先diff(data, oldVms) 大概是先比较 新旧两个列表 的vm的数据状态, 然后

差量更新DOM


步骤:

1.遍历 新列表里的 每一项, 如果 该项的vm 之前就存在, 则标记为 _reused

如果不存在对应的vm, 则创建一个新的

(这个vm 个人理解是每个列表每一行数据都有个独立的vm , 存在意思是新列表数据也和vm的数据一样 )


2. 遍历旧列表的每一项, 如果这一项对应对的vm没有被标记为 _reused,

说明新列表不需要利用这个vm, 就马上销毁它


3. 根据新列表item顺序, 整理 新的vm在视图 和 _reused的vm 顺序,

列表更新完成

转载于:https://www.cnblogs.com/dhsz/p/6389270.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值