虚拟DOM
- 谈谈对虚拟DOM的理解
虚拟DOM本质上就使用对象的方式来表示DOM结构。然后结合不同的渲染工具使得跨平台称为可能。通过事务处理机制将多次的DOM修改的结果一次性更新到页面上,减少了页面的渲染次数,减少修改DOM的重绘重排次数,提高渲染性能。
在将虚拟DOM转变成真实DOM之前先在内存中缓存一份虚拟DOM,每次数据发生变化之后将现在的虚拟DOM与缓存中的虚拟DOM进行对比,通过diff算法来进行比较,渲染时只修改改变的,没有改变的通过原先的数据进行渲染。
- 为什么要用虚拟DOM
将多次的DOM操作改为一次这样可以降低性能的消耗。
- 虚拟DOM真的比真实DOM性能好吗?
在真实DOM操作的时候进行针对性的优化吗,可以提高性能。
- Vue中key的作用
1在v-if中,如果v-if切换的是同一类型的元素则会对之前的元素进行复用,这放在input元素中会导致之前的输入没有被删掉,加了key之后会保证元素的唯一性,就不会出现刚刚的那种情况了
2在v-for中进行元素身份进行跟踪
- 为什么不建议用index作为key?
使用index 作为 key和没写基本上没区别,因为不管数组的顺序怎么颠倒,index 都是 0, 1, 2...这样排列,导致 Vue 会复用错误的旧子节点,做很多额外的工作。
- 虚拟DOM有什么优缺点?
优点:
1虚拟DOM把多次的DOM操作转化成一次DOM操作减少了浏览器的重排和重绘操作提高了性能。
2通过JS的虚拟DOM对象隐藏了DOM操作,使得开发人员更专注于逻辑的编写。
3支持跨平台
缺点:
1初始的渲染速度慢,因为需要计算新老两份虚拟ODM树的差异,然后才能进行更有效的更新操作。这个过程需要消耗额外的计算资源和运行时间。
2内存消耗大,因为需要内存中维护两份DOM树。