你好!在这篇简短的文章中,我想分享我对没有虚拟dom的反应性的想法。
我认为这是一项非常有前途的技术,可以使您在不比较节点元素的情况下尽快重新刷新UI。从本质上讲,虚拟DOM涉及一个比较过程,该过程有助于JS了解何时更新节点,何时不更新节点。
这是一项很好的技术,在Cample的第一个Beta版本中。 u>会减慢重新绘制的工作,因为您需要存储描述DOM或节点本身的大型对象。
if(isDeepEqualNode(this._dynamic.oldNode, e)){
...redraw
}
示例代码版本2.0.0-beta.2
我可能没有太多经验,但我认为这是如此。
我认为可以尽可能多地压缩元素的节点对象,以使虚拟DOM运行更快,但仍然留下对象比较的基础。此基础具有速度限制。
但是,但是,虚拟DOM非常方便,尤其是在使用字符串插值时。这将跟踪DOM中新添加的插值,这将允许UI重新绘制,从而使开发更容易。
<div>{{dynamicData}}</div>
字符串插值示例
另外,没有虚拟DOM的反应性存在一个很大的问题和机会,因为从本质上讲,渲染曾经发生过。
class Component{
render(){
render();
...do a render once and work with the first nodes
}
}
示例代码版本2.0.0-beta.3
因此,带有字符串插值的Rerender的可能性消失了,这不是很酷的。
因此,使用虚拟DOM有一个很大的优势,并且鉴于虚拟DOM仍然可以是真正的,即使不是更快的速度,因此速度几乎相等,那么在开发框架时已经有一个选择过程。
是的,您可以尝试将新元素添加到第一个渲染的节点数组中,但是随后有必要监视DOM中的更改,这再次主要导致创建虚拟DOM。 >
我认为,这是重绘的技术的重要数量,而没有虚拟dom。
总结,我认为每种技术都有其利弊。是的,没有虚拟DOM的处理速度更快,但是它具有缺点,我在上面描述了。在这里,该项目正在使用该工具的项目扮演重要角色。
P.S。谢谢大家的阅读!也许我不太了解,但我认为这些想法可能有一个地方。你怎么看?