问题描述
我了解 virtual-dom 如何批量处理 DOM 以提高性能。但是我看到一些帖子说 virtual-dom 很快,因为它是实际 DOM 的 in-memory representation
。
我已阅读此ANSWER。它说:
另一方面,对于任何操作,都必须从页面访问真正的 DOM 并将其加载到内存中。
这是否意味着浏览器的真实 DOM 不在内存中?如果浏览器的 DOM 也是 in-memory
,那么虚拟 DOM 的 in-memory
有什么特别之处?
解决方法
虚拟 DOM 只是内存中的一个 javascript 对象。虽然 DOM 也主要在内存中(不在磁盘和云端),但它是一个复杂的系统,有很多部分相互连接。
区别在于 DOM 很慢。操作 DOM 涉及许多其他任务 (https://stackoverflow.com/a/6817110/8810271)。在没有其他任务的情况下操作虚拟 DOM 只不过是一个 javascript 对象,比 element.innerHTML=x
快得多。
但请记住,在对虚拟 DOM 进行差异化之后,您仍然需要操作 DOM,以使更改生效。还有it isn't always faster。