vue中的虚拟DOM

作者 : 开心源码 本文共729个字,预计阅读时间需要2分钟 发布时间: 2022-05-13 共254人阅读

Vue2.0引入了虚拟DOM,比Vue1.0的初始渲染速度提升了2~4倍,并大大降低了内存消耗。

虚拟DOM的提出

在早期的时候,页面的交互比较简单,没有复杂的状态需要管理,更不需要频繁的操作DOM;但随着页面的功能越来越多,用户的需求越来越复杂,DOM 的操作也越来越频繁。而每当操作DOM的时候,会引起页面的回流以及重绘,添加浏览器的消耗,降低了页面的渲染速度,从而降低了浏览器的性能。虚拟DOM的应用可以减少对DOM元素的操作,从而提升浏览器的性能。

模板转换成视图的过程
  • Vue.js通过编译将模板转换成渲染函数(render),执行渲染函数即可以得到一个虚拟DOM
  • 在对模型进行操作的时候,会触发对应的Dep中的Watcher对象。Watcher对象会调用对应的update来修改视图。这个过程主要是将新旧DOM进行差异比照,而后根据结果进行比照。

总之,Vue将模板编译成虚拟DOM渲染函数。结合Vue自带的响应系统,在状态改变时,Vue能够智能地计算出重新渲染组件的最小代价并应用到DOM操作上。

转换过程

针对上图补充说明几个概念
  • 渲染函数:渲染函数是用来生成虚拟DOM的。
  • vnode虚拟节点:它可以代表一个真实的DOM节点,通过createElement方法能够将vnode渲染成DOM节点。简单地说,虚拟节点可以了解成节点形容对象,它形容了应该怎么去创立真实的DOM节点。
  • patch(也称为patching算法):虚拟DOM最核心的部分,它可以将vnode渲染成为真实的DOM,这个过程是比照新旧虚拟节点之间有哪些不同,而后根据比照结果找出需要升级的节点进行升级。而patch本身就有补丁,修补的意思,其实际作用是在现有DOM上进行修改来实现升级视图的目的。
说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » vue中的虚拟DOM

发表回复