zoukankan      html  css  js  c++  java
  • 虚拟dom和real dom区别

    Real DOM,真实DOM, 意思为文档对象模型,是一个结构化文本的抽象,在页面渲染出的每一个结点都是一个真实DOM结构,

    Virtual Dom,本质上是以 JavaScript 对象形式存在的对 DOM 的描述。

    区别:

    1. 虚拟DOM不会进行排版与重绘操作

    2. 虚拟DOM进行频繁修改,然后一次性比较并修改真实DOM中需要改的部分(注意!),最后并在真实DOM中进行排版与重绘,减少过多DOM节点排版与重绘损耗

    3. 真实DOM频繁排版与重绘的效率是相当低的

    4. 虚拟DOM有效降低大面积(真实DOM节点)的重绘与排版,因为最终与真实DOM比较差异,可以只渲染局部(同2)

    使用虚拟DOM的损耗计算:

    总损耗 = 虚拟DOM增删改 + (与Diff算法效率有关)真实DOM差异增删改 + (较少的节点)排版与重绘
    
    

    直接使用真实DOM的损耗计算:

    总损耗 = 真实DOM完全增删改 + (可能较多的节点)排版与重绘
    
    

    优缺点

    真实DOM的

      优势:易用

      缺点:

             效率低,解析速度慢,内存占用量过高

             性能差:频繁操作真实DOM,易于导致重绘与回流

    使用虚拟DOM的

     优势如下:

        简单方便:如果使用手动操作真实DOM来完成页面,繁琐又容易出错,在大规模应用下维护起来也很困难

       性能方面:使用Virtual DOM,能够有效避免真实DOM数频繁更新,减少多次引起重绘与回流,提高性能

        跨平台:React借助虚拟DOM, 带来了跨平台的能力,一套代码多端运行

      缺点:

       在一些性能要求极高的应用中虚拟 DOM 无法进行针对性的极致优化

      首次渲染大量DOM时,由于多了一层虚拟DOM的计算,速度比正常稍慢

    总之,一切为了减弱频繁的大面积重绘引发的性能问题,不同框架不一定需要虚拟DOM,关键看框架是否频繁会引发大面积的DOM操作
  • 相关阅读:
    Hibernate笔记——(ONE TO ONE)一对一
    Hibernate笔记——第一个简单实例
    Hibernate笔记——Hibernate介绍和初次环境配置
    JavaWeb笔记——ajax异步请求
    Spring笔记——Spring+JDBC组合开发
    Spring笔记——使用Spring进行面向切面(AOP)编程
    Spring笔记——依赖注入
    Java笔记——面向切面编程(AOP模式)
    Spring笔记——Spring框架简介和初次框架配置
    Java产生随机数
  • 原文地址:https://www.cnblogs.com/ygunoil/p/15164210.html
Copyright © 2011-2022 走看看