美文网首页
虚拟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