前端面试——Vue篇(什么是虚拟DOM?什么是diff算法?循环中key的作用?)

1.什么是虚拟DOM?

虚拟DOM就是用普通的js来描述的一种DOM结果,因为不是真实的DOM,所以称之为虚拟DOM。

2.什么是diff算法?

diff算法是一种对比算法,用来对比新旧虚拟DOM,从而最小程度的更新视图。

没有用到key的diff算法:假设我们有一个数组【A,B,C,D,E】,在索引为2的地方插入‘DDD’,那么新的数组就为【A,B,C,DDD,D,E】,看了diff算法的源码,大致上就是虚拟DOM会有一个新的vNode和旧的vNode,然后新旧vnode会进行一个替换,新增和删除,性能不是特别高。

3.循环中key的作用?

循环中key的作用就要和diff挂钩了,在diff算法中有了key的作用,性能会大大提高,还是原来的虚拟DOM产生新旧的vNode,但是因为有key,他会给每一个数据一个唯一的标识,通过前序对比和后续对比,再进行新增和删除,就不会出现覆盖替换的情况了,(当然还有一种特殊情况就是乱序的,就需要用到最长递增子序列算法(贪心法+二分法))。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值