笔记 - 如何理解虚拟DOM?(转)
2017-11-14 14:40
429 查看
转自https://www.zhihu.com/question/29504639
摘录:
用新渲染的对象树去和旧的树进行对比,记录这两棵树差异。记录下来的不同就是我们需要对页面真正的 DOM 操作,然后把它们应用在真正的 DOM 树上,页面就变更了。这样就可以做到:视图的结构确实是整个全新渲染了,但是最后操作DOM的时候确实只变更有不同的地方。
这就是所谓的 Virtual DOM 算法。包括几个步骤:
用 JavaScript 对象结构表示 DOM 树的结构;然后用这个树构建一个真正的 DOM 树,插到文档当中
当状态变更的时候,重新构造一棵新的对象树。然后用新的树和旧的树进行比较,记录两棵树差异
把2所记录的差异应用到步骤1所构建的真正的DOM树上,视图就更新了
Virtual DOM 本质上就是在 JS 和 DOM 之间做了一个缓存。可以类比 CPU 和硬盘,既然硬盘这么慢,我们就在它们之间加个缓存:既然 DOM 这么慢,我们就在它们 JS 和 DOM 之间加个缓存。CPU(JS)只操作内存(Virtual DOM),最后的时候再把变更写入硬盘(DOM)。
作者:戴嘉华
链接:https://www.zhihu.com/question/29504639/answer/73607810
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
摘录:
用新渲染的对象树去和旧的树进行对比,记录这两棵树差异。记录下来的不同就是我们需要对页面真正的 DOM 操作,然后把它们应用在真正的 DOM 树上,页面就变更了。这样就可以做到:视图的结构确实是整个全新渲染了,但是最后操作DOM的时候确实只变更有不同的地方。
这就是所谓的 Virtual DOM 算法。包括几个步骤:
用 JavaScript 对象结构表示 DOM 树的结构;然后用这个树构建一个真正的 DOM 树,插到文档当中
当状态变更的时候,重新构造一棵新的对象树。然后用新的树和旧的树进行比较,记录两棵树差异
把2所记录的差异应用到步骤1所构建的真正的DOM树上,视图就更新了
Virtual DOM 本质上就是在 JS 和 DOM 之间做了一个缓存。可以类比 CPU 和硬盘,既然硬盘这么慢,我们就在它们之间加个缓存:既然 DOM 这么慢,我们就在它们 JS 和 DOM 之间加个缓存。CPU(JS)只操作内存(Virtual DOM),最后的时候再把变更写入硬盘(DOM)。
作者:戴嘉华
链接:https://www.zhihu.com/question/29504639/answer/73607810
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
相关文章推荐
- 如何理解虚拟DOM?
- 如何理解虚拟DOM
- Unix环境编程学习笔记----如何理解套接字缓冲区???? ?其作用和原理是什么???
- 【慕课笔记】2-1 应用DOM方式解析XML—如何进行 XML 文件解析前的准备工作
- 深刻理解React(-) --JSX和虚拟DOM
- [转] 虚拟 DOM 内部是如何工作的?
- 深入理解react中的虚拟DOM、diff算法
- React 虚拟DOM的理解
- 深入理解虚拟DOM
- HTML源码DOM的offsetLeft,Left,clientLeft区别是什么样的?如何理解?
- TCP/IP学习笔记-如何理解
- 深刻理解 React (一) ——JSX和虚拟DOM
- 全面理解虚拟DOM(1)
- seo学习笔记,如何设置虚拟主机,如何书写重定向文件
- React 虚拟dom是如何实现的
- 黑马程序员之c#学习笔记:如何理解C#中的指针
- 菜鸟学Android笔记(十三):Tomcat目录结构及如何配置虚拟目录
- 全面理解虚拟DOM,以及通过diff算法实现真正的虚拟DOM操作
- 算法笔记 (6)线性表如何理解
- 算法导论学习笔记之三--如何理解和记忆master定理