虚拟DOM

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