Skip to content
Menu
编程侠
  • 首页
  • 资讯
    • 手机
  • 博客
    • 博客vue
    • 博客PHP
  • Q我
编程侠
2021-06-092021-06-09

虚拟DOM

虚拟DOM是什么?

 当用document.getElementById去获取DOM操作时,浏览器会从构建DOM树开始,从头到尾执行一遍流程,就很有可能导致操作次数过多,计算的与 DOM 节点相关的坐标值等各种值就会很消耗性能。为了解决这个问题,虚拟DOM就由此产生。

真实DOM渲染过程

浏览器渲染引擎工作流程大致分为以下4个步骤:

创建DOM树 → 创建CSSOM树 → 生成render树 → 布局render树 → 绘制render树

%title插图%num

用JS模拟一个DOM结构

html代码:

<div id="div" class="container">
    <p>hello,编程侠</p>
    <ul style="padding: 5px">
        <li>编</li>
        <li>程</li>
        <li>侠</li>
    </ul>
</div>

JS模拟的DOM结构:

{
	tag: 'div',
    props:{
        className: 'container',
        id: 'div'
    },
    children: [
        {
            tag: 'p',
            chindren: 'hello,编程侠'
        },
        {
            tag: 'ul',
            props:{ style: 'padding: 5px' },
            children: [
                {
                    tag: 'li',
                    children: '编'
                },
                {
                    tag: 'li',
                    children: '程'
                },
                {
                    tag: 'li',
                    children: '侠'
                },
            ]
        }
    ]
}

这样就可以实现用 tag , props 和 children 来模拟 DOM 树结构。

用 JS 模拟 DOM 树的结构的好处在于,先将页面的更新全部反映到虚拟 DOM 上,计算出最小的变更,操作最少的DOM。再加上操作内存中 JS 对象的速度是相当快的,计算出的虚拟DOM再映射到真实的DOM 上,最后才交由浏览器去绘制。既减少了绘制次数,又减少了DOM变更,这样就很大程度缓解了真实 DOM 渲染速度慢,性能消耗大的问题。

最新

  • 831密码安全口令
  • 链接跳转到百度地图的指定地址
  • 云服务提到的99.99%的服务可用性,这是个什么概念?
  • 兼容IE的CSS竖排文字代码
  • 网页灰度

标签

831 a标签 canvas clone csrf echarts filter GB2312 grayscale Hello html2canvas iframe prism Unicode UTF-8 wordpress world XSS 不触发 云服务 代码雨 大数据 异常 手机号 打印 拼多多 数组 文字转语音 朗读 正则 深浅拷贝 热力图 竖排 签名验证 编码 编程圈 置灰 背代码 节流 速度 链接 链接跳转 键盘 防抖 验证

友情链接

  • staggering-beauty
  • 编程侠
©2025 编程侠 渝ICP备20006693号-4