VNode 是什么?优点?什么是虚拟 DOM?diff算法?

是什么?
在vue.js中,Vnode是一个类,可以生成不同类型的vnode实例,而不同类型的vnode表示不同类型的真实DOM元素。VNode的全称是Virtual Node,也就是虚拟节点;事实上,无论是组件还是元素,它们最终在Vue中表示出来的都是一个个VNode。我们可以把vnode理解成JavaScript对象版本的DOM元素。渲染视图的过程是先创建vnode,然后在使用vnode去生成真实的DOM元素,最后插入到页面渲染视图。

优点?
兼容性强,不受执行环境的影响。Vnode 因为是 JS 对象,不管 node 还是,浏览器,都可以统一操作,从而获得了服务端渲染、原生渲染、手写渲染函数等能力由于Vue.js对组件采用了虚拟DOM来更新视图,当属性发生变化时,整个组件都要进行重新渲染的操作,但组件内并不是所有的DOM节点都需要更新,所以将vnode缓存并将当前新生成的vnode和缓存的vnode作对比,只对需要更新的部分进行DOM操作。可以提升很多的性能。

什么是虚拟 DOM?
虚拟 dom 是利用 js 描述元素与元素的关系,用 js 对象来表示真实的 DOM 树结构,创建一个虚拟 DOM 对象。在组件渲染的时候会调用 render 函数,这个函数会生成一个虚拟 dom,再根据这个虚拟 dom 生成真实的 dom,然后这个真实的 dom 会挂载到我们的页面中。能够有效避免真实DOM数频繁更新,减少多次引起重绘与回流,提高性能。

diff算法的原理是什么?
当DOM发生更新时,Vue不是直接更新真实的DOM,而是先获取新的虚拟DOM,再和更新之前旧的虚拟DOM进行对比,计算出差异部分,然后再差异化更新,避免大幅度操作DOM浪费性能。

diff算法的本质就是:找出两个对象之间的差异,目的是尽可能做到节点复用。

感兴趣的可以去查阅更多资料 谢谢大家

猜你喜欢

转载自blog.csdn.net/m0_71231013/article/details/125365776
今日推荐