在cample.js beta版本的示例上没有虚拟DOM的反应性
#javascript #网络开发人员 #reactivity #cample

你好!在这篇简短的文章中,我想分享我对没有虚拟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。谢谢大家的阅读!也许我不太了解,但我认为这些想法可能有一个地方。你怎么看?