由于在浏览器中操作DOM的代价是非常“昂贵”的,所以才在Vue引入了Virtual DOM,Virtual DOM是对真实DOM的一种抽象描述。使用virtual DOM渲染页面时,也不会将整个虚拟dom全部渲染。会使用diff算法,计算Virtual DOM树改变部分。

Vue的Diff算法循环比较Virtual DOM同级节点,若找不到与新节点类型相同的节点,则插入一个新节点,若有相同类型的节点则进行节点属性的更新,最后删除新节点列表中不包含的旧节点。

在Diff中会使用到一种就地复用的策略。就地复用是指Vue会尽可能复用之前的DOM,尽可能不发生DOM的移动。同类节点为类型相同且节点数据一致,如前后两个span,span标签上的属性没有改变,但是里面的内容变了,这样就算作同类节点

  <div id="app"><span v-if="isUser"><label for="username">用户账号</label><input id="username" type="text" placeholder="账号"></span><span v-else><label for="password">用户密码</label><input id="password" type="text" placeholder="密码"></span><button @click="isUser=!isUser">按钮</button></div>

上面代码中label标签和input框都是属于同类节点,点击按钮切换时会复用。input中的已经输入的内容也不会清空。

如上图,输入框中的内容不会清空。


key

vue中有key的话,就会根据key值去判断某个是否修改,重新渲染这一项,对数据改变之后的diff更新比较有很大的性能提升。为了更加高效的更新虚拟dom,另外在vue中使用相同标签元素的过度切换的时候,也需要使用key属性,其目的是为了让vue区分它们,否则vue就只会替换其内部属性而不会触发过度效果。

vue 插入dom_vue内部复用问题以及虚拟dom的更新相关推荐

  1. 【Vue.js源码解析 二】-- 虚拟 DOM

    前言 笔记来源:拉勾教育 大前端高薪训练营 阅读建议:建议通过左侧导航栏进行阅读 虚拟 DOM 基本介绍 什么是虚拟 DOM 虚拟 DOM(Virtual DOM) 是使用 JavaScript 对象 ...

  2. Vue 原理解析(五)之 虚拟Dom 到真实Dom的转换过程

    上一篇 vue 原理解析(四): 虚拟Dom 是怎么生成的 再有一颗树形结构的Javascript对象后, 我们需要做的就是讲这棵树跟真实Dom树形成映射关系.我们先回顾之前的mountComponn ...

  3. Vue进阶之Virtual DOM(虚拟DOM) 实现原理

    Vue进阶之Virtual DOM(虚拟DOM) 实现原理 Virtual DOM(虚拟 DOM),是由普通的 JS 对象来描述 DOM 对象,因为不是真实的 DOM 对象,所以叫 Virtual D ...

  4. vue基础--模板语法、常用指令:v-if、v-show、v-for、虚拟DOM、v-once、v-cloak、v-text、v-html、v-bind、v-on、自定义指令

    一.模板语法 Vue.js 使用了基于 HTML 的模板语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据.所有 Vue.js 的模板都是合法的 HTML,所以能被遵循规范的浏览器和 ...

  5. VUE | key的内部原理、Vue监测数据的原理、Vue.set()和vm.$set()的使用

    目录 目录 一.react.vue中的key有什么作用?(key的内部原理) 1.虚拟DOM中key的作用: 2.对比规则: 3.用index作为key可能会引发的问题: 4.开发中如何选择key? ...

  6. 26.Vue列表渲染中key的作用与原理(内含虚拟DOM的对比算法详解)

    目录 1.暴露问题,使用index作为key 2.使用唯一标识p.id作为key 3.不写key的配置 4.key的工作原理及虚拟DOM的对比算法 5.总结 25.Vue列表渲染_爱米酱的博客-CSD ...

  7. 学习Vue3 第五章(Vue核心虚拟Dom和 diff 算法)

    为什么要学习源码 1.可以提升自己学习更优秀的API设计和代码逻辑 2.面试的时候也会经常问源码相关的东西 3.更快的掌握vue和遇到问题可以定位 介绍虚拟DOM 虚拟DOM就是通过JS来生成一个AS ...

  8. Vue 这更新是要抛弃虚拟 DOM ?

    最近 Vue 在美国举办了 Vue Conf 2022,不过可惜的是在国内并未掀起任何的波澜,于是我来试试能不能一石激起千层浪,因为尤雨溪在 Vue Conf 上说他们正在探索一种新的编译策略. 流行 ...

  9. 深度剖析 Vue3 如何通过虚拟DOM更新页面

    上一讲我们主要介绍了 Vue 项目的首次渲染流程,在 mountComponent 中注册了effect 函数,这样,在组件数据有更新的时候,就会通知到组件的 update 方法进行更新 Vue 中组 ...

最新文章

  1. IOS开发怎么UINavigationController设置title标题的颜色?
  2. 30分钟 Keras 创建一个图像分类器
  3. 好消息!算法工程师提高待遇的好机会,终于来了!!
  4. 图片浏览(CATransition)转场动画
  5. Java未来路在何方?挑战大厂重燃激情!
  6. LTDC/DMA2D—液晶显示
  7. asp.net使用post方式action到另一个页面,在另一个页面接受form表单的值!(报错,已解决!)...
  8. 关于公司架构管控的思考
  9. PDF与Base64的相互转换以及操作
  10. openGauss数据库日志管理指导
  11. 数据拟合MATLAB与origin哪个好,Origin:数据处理、作图和拟合的利器
  12. 如何把TS视频文件转换为MP4格式?
  13. 一根网线连接两台电脑的方法
  14. html alt 作用,什么是alt标签的作用,alt标签对SEO有哪些影响呢?
  15. java中final关键字。PS:转自海子
  16. 图灵学院Java开发笔记
  17. 16进制颜色识别和搭配规律 (实用)
  18. 马里奥(附代码windows)
  19. HTML、CSS、JavaScript 学习笔记
  20. 汇承4.0蓝牙BLE串口助手HC-COM的使用方法及出错的原因和改正方法

热门文章

  1. vs怎么设置php文件调试,使用vs code编辑调试php配置的方法
  2. 计算机网络中st是什么,计算机组成中ST 是指什么
  3. mysql三个字段最优索引_mysql 多列索引优化
  4. 场地测量的方法和程序_建筑施工测量的内容与方法
  5. python os.system返回值_python os.system()返回值判断
  6. linux ping IP地址与telnet 测试IP端口
  7. ftp上传当天文件的方法_ftp自动上传文件,ftp自动上传文件的配置方法及使用教程...
  8. golang打包HTML为Android,使用Go开发Web服务,并打包html/js/css等静态资源文件
  9. php数组操作之合并相同键名的值,排序,排重,去空值等
  10. Java程序员必看!2021Java大厂面试知识分享