虚拟DOM和Real DOM步骤可实现简单操作

时间:2018-02-08 15:37:39

标签: javascript reactjs dom

我读了很多关于VirualDOM的文章。 所有文章都解释了VirtualDOM如何计算变化,然后以有效的步骤更改真实的DOM。 但是他们没有解释如何在realDOM中对元素进行反应?他们使用官方API? (' document.createElement',appendChild等...)?

因此他们说RealDOM很慢,如果你在realDOM中改变某些东西,他会重新渲染整个DOM。

所以例如:

简单的HTML标记:

<ul class="list">
  <li>1</li>
  <li>2</li>
  <li>3</li>
<ul> 

简单的脚本:

const li = document.createElement('li');
document.querySelector('.list').appendChild(li);

问题:

1)此操作将重新绘制整个DOM?

2)在这个简单的操作中,反应会更快吗?

3)反应后计算VirtualDOM与RealDOM如何在realDOM上做出反应?反应使用浏览器API?或者他们有其他方式?

感谢所有人! :)

1 个答案:

答案 0 :(得分:2)

虚拟DOM(VueJs,ReactJs和其他)只是DOM的抽象级别。这意味着,Virtual DOM中的基本操作总是比DOM慢。但Virtual DOM和组件方法有助于在大型SPA应用程序中有效地管理DOM树。 基本上,Virtual DOM允许您最小化重新布局的需要并重新绘制DOM树。

回答你的问题:
1)没有 2)无论如何 3)是的,ReactJs使用DOM,例如,这里是源代码:
https://github.com/facebook/react/blob/master/packages/react-dom/src/client/ReactDOMFiberComponent.js#L379

https://github.com/facebook/react/blob/master/packages/react-dom/src/client/setInnerHTML.js#L38