美文网首页
虚拟DOM 系列(一)

虚拟DOM 系列(一)

作者: yfmei | 来源:发表于2019-06-27 15:23 被阅读0次

    JS 和 DOM 交互的效率很低

    • Jquery 的出现虽然解决了 DOM 的绑定, 但是并没有解决频繁操作 DOM 的情况.
    • 一个简单的 div 都有很多无用的属性
    • JS和 DOM 之间进行沟通是有代价的,JS 是通过 JS 引擎,而 DOM 属于渲染引擎。这就类似于计算机中的 cpu 和硬盘,cpu 很快,但是硬盘很慢,所以有了缓存(划重点,虚拟 DOM 来了)。

    看下面的两段代码

      <ol>
        <li>item 1</li>
        <li>item 2</li>
        <li>item 3</li>
      </ol>
    
     {
        type: "ol", props:{id: "orderList"}, 
            children: [
                {type: "li", props: {}, children: ["item 1"]},
                {type: "li", props: {}, children: ["item 2"]},
                {type: "li", props: {}, children: ["item 3"]}
            ]
     }
    

    我们是不是可以用JS对象表示DOM树的结构,注意以下两点

    • 用JS对象表示DOM元素
    • 用JS字符串表示文本节点

    实现逻辑

    • JS对象创建虚拟 DOM树 插入到文档中(vm)
    • 状态变更时: 重新构建一颗虚拟 DOM 树, 比较两颗虚拟 DOM 树的差异(diff)
    • 把差异更新到真正的 DOM 树(patch)

    相关文章

      网友评论

          本文标题:虚拟DOM 系列(一)

          本文链接:https://www.haomeiwen.com/subject/jhjrcctx.html