为什么 React 的 virtual DOM 比原生的DOM 渲染性能更好

 我来答
cainiaokan
2017-05-19 · TA获得超过2917个赞
知道小有建树答主
回答量:651
采纳率:66%
帮助的人:609万
展开全部
DOM元素是通过宿主对象的方式提供给JS运行时的。

DOM <------------> JS Runtime
DOM作为html文档模型,非常复杂,通常是由浏览器专门独立的模块去实现。当js运行时有需要进行DOM操作的时候,JS运行时向DOM接口发出请求,然后等待DOM结果返回。这是一个阻塞的过程,因此效率比较低。
而Virtual DOM就是为解决此问题而生。在与真正的DOM层之间加入了一个虚拟DOM层,对DOM的操作都首先映射到对Virtual DOM的操作。然后Virtual DOM通过tree diff算法,通过最小化DOM操作,一次性的把DOM的更改提交到真实的DOM上去。
在没有Virtual DOM之前,我们都是通常会做很多多余的DOM操作,举例来说明:
当某个信息表格我们通过ajax请求获取更新的数据之后,我们通常把整个表格都更新一遍,但是里面可能只有某几个数据项发生更新了。这时候就产生了不必要的DOM操作。而现在因为有了Virtual DOM的存在,通过diff算法,只在发生了变化的DOM元素上进行操作,这就大大减少了DOM操作的频次,使得性能更优。
并且Virtual DOM的diff算法,建立在特殊的假设之上,使得diff操作的算法效率由O(n^3)降低为O(n),额外diff的性能损耗可以忽略不计,而减少DOM操作带来的优化却是显著的。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式