关于MVVM的性能问题

关于MVVM的性能问题

老师您好,现在的MVVM框架都说对比传统直接操作dom在渲染性能上提高很多。关于这一点我不太理解,MVVM框架本质上也要触发dom更新呀,而且还多做了一层虚拟dom,还要比对虚拟dom为什么说渲染性能提升了?

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
张轩 2021-05-09 10:19:52

同学你好 很早以前写了些文章 正好可以拿出来让你看下


“得益于 Virtual DOM,React 的渲染性能很好,甚于直接操作真实 DOM”

Virtual DOM 的性能优势是常常被人提及的一点,很多 React 初学者只知道操作虚拟 DOM 快,而不清楚具体发生了什么。

操作真实 DOM 的性能确实很差,然而要清楚的一点是,Virtual DOM 的改变最终还是要作用到真实 DOM 上的。在我们谈到 Virtual DOM 的性能时,我们说的其实是一种粗暴的渲染行为:将整个界面全部替换(重新渲染),在这种情况下,首先重新渲染得到相对轻量的 Virtual DOM,再通过对比(DIff)得到差异部分,再将差异部分像打补丁一样作用到真实 DOM 上,如此取得的性能提升是相对真实 DOM 的整体重新渲染而言的。

在事实上的传统开发中,我们手动操作真实 DOM,手动指定更新部位及更新方式,虽然常常需要维护两份视图与数据的对应关系,且常常容易出错导致数据视图不匹配,但手工更新行为的变更往往比对比计算的结果更精确。不排除虚拟 DOM 对比的计算结果要比手动指定更精确、改动范围更小的情况,但这种情况一般有限,何况由于多了渲染生成 Virtual DOM 并进行对比计算的过程,React 的方式在绝大部分情况下都是代价更大的。

以可接受的执行效率损失作为代价换取极大的开发效率提升,这是一个趋势,使用 React 的同时,也是顺应这一趋势的过程。


  • 提问者 zhaobao1830 #1

    老师您好,我还有个疑问,前几年学的一个课程中一个老师说改变页面中的dom后页面会整体全部重新渲染,不会根据你改动的范围做局部渲染。请问这个知识是对的吗?

    2021-05-10 19:42:10
  • 张轩 回复 提问者 zhaobao1830 #2

    同学你好 可以看一下这篇文章 正好对你这个问题答疑解惑

    https://juejin.cn/post/6844903917923352590

    2021-05-11 10:32:04
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师