Vue2/Vue3 局部更新渲染机制

57 阅读2分钟

Vue3 渲染机制

在Vue3中,如果局部修改了视图模板,并且这一部分的渲染逻辑依赖于响应式数据,Vue3会尽量做到最小的重新执行,只重新执行于修改相关的部分。
Vue3通过基于模板的编译和优化,以及虚拟DOM的精细化比对,实现了高效的渲染。当数据变化时,Vue3会只重新渲染发生变化的部分,而不是整个视图。

Vue2 渲染机制以及和Vue3的区别

当在Vue2中触发数据变化时,整个组件的render函数会被重新执行,生成一个新的虚拟DOM树。然后,Vue 2通过比对前后两个虚拟DOM树的差异,确定实际DOM中需要进行更新的部分,并进行相应的DOM操作。这个过程可能会涉及到整个组件的render函数,即使只有一小部分模板发生了变化
Vue3引入了Proxy以及更先进的渲染优化机制,其中的reactive和ref的响应式数据使用了Proxy对象进行跟踪。Vue 3在编译模板时还执行了静态提升,这意味着对于模板中的静态部分,Vue3会在组件的首次渲染时将其提升到一次性的渲染,减少了运行时的开销。这使得Vue3在局部更新视图时能够更有效地减小重新渲染的范围,只有与响应式数据变化相关的部分会被重新执行,而不是整个组件的render函数
所以,虽然Vue2也能够做到局部更新,但Vue3在这方面有更加精细的优化,能够更有效地减小重新渲染的开销,这对性能的提升非常有帮助,尤其是在大型应用中。