vue 插入dom_vue内部复用问题以及虚拟dom的更新
由于在浏览器中操作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的更新相关推荐
- 【Vue.js源码解析 二】-- 虚拟 DOM
前言 笔记来源:拉勾教育 大前端高薪训练营 阅读建议:建议通过左侧导航栏进行阅读 虚拟 DOM 基本介绍 什么是虚拟 DOM 虚拟 DOM(Virtual DOM) 是使用 JavaScript 对象 ...
- Vue 原理解析(五)之 虚拟Dom 到真实Dom的转换过程
上一篇 vue 原理解析(四): 虚拟Dom 是怎么生成的 再有一颗树形结构的Javascript对象后, 我们需要做的就是讲这棵树跟真实Dom树形成映射关系.我们先回顾之前的mountComponn ...
- Vue进阶之Virtual DOM(虚拟DOM) 实现原理
Vue进阶之Virtual DOM(虚拟DOM) 实现原理 Virtual DOM(虚拟 DOM),是由普通的 JS 对象来描述 DOM 对象,因为不是真实的 DOM 对象,所以叫 Virtual D ...
- 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,所以能被遵循规范的浏览器和 ...
- VUE | key的内部原理、Vue监测数据的原理、Vue.set()和vm.$set()的使用
目录 目录 一.react.vue中的key有什么作用?(key的内部原理) 1.虚拟DOM中key的作用: 2.对比规则: 3.用index作为key可能会引发的问题: 4.开发中如何选择key? ...
- 26.Vue列表渲染中key的作用与原理(内含虚拟DOM的对比算法详解)
目录 1.暴露问题,使用index作为key 2.使用唯一标识p.id作为key 3.不写key的配置 4.key的工作原理及虚拟DOM的对比算法 5.总结 25.Vue列表渲染_爱米酱的博客-CSD ...
- 学习Vue3 第五章(Vue核心虚拟Dom和 diff 算法)
为什么要学习源码 1.可以提升自己学习更优秀的API设计和代码逻辑 2.面试的时候也会经常问源码相关的东西 3.更快的掌握vue和遇到问题可以定位 介绍虚拟DOM 虚拟DOM就是通过JS来生成一个AS ...
- Vue 这更新是要抛弃虚拟 DOM ?
最近 Vue 在美国举办了 Vue Conf 2022,不过可惜的是在国内并未掀起任何的波澜,于是我来试试能不能一石激起千层浪,因为尤雨溪在 Vue Conf 上说他们正在探索一种新的编译策略. 流行 ...
- 深度剖析 Vue3 如何通过虚拟DOM更新页面
上一讲我们主要介绍了 Vue 项目的首次渲染流程,在 mountComponent 中注册了effect 函数,这样,在组件数据有更新的时候,就会通知到组件的 update 方法进行更新 Vue 中组 ...
最新文章
- IOS开发怎么UINavigationController设置title标题的颜色?
- 30分钟 Keras 创建一个图像分类器
- 好消息!算法工程师提高待遇的好机会,终于来了!!
- 图片浏览(CATransition)转场动画
- Java未来路在何方?挑战大厂重燃激情!
- LTDC/DMA2D—液晶显示
- asp.net使用post方式action到另一个页面,在另一个页面接受form表单的值!(报错,已解决!)...
- 关于公司架构管控的思考
- PDF与Base64的相互转换以及操作
- openGauss数据库日志管理指导
- 数据拟合MATLAB与origin哪个好,Origin:数据处理、作图和拟合的利器
- 如何把TS视频文件转换为MP4格式?
- 一根网线连接两台电脑的方法
- html alt 作用,什么是alt标签的作用,alt标签对SEO有哪些影响呢?
- java中final关键字。PS:转自海子
- 图灵学院Java开发笔记
- 16进制颜色识别和搭配规律 (实用)
- 马里奥(附代码windows)
- HTML、CSS、JavaScript 学习笔记
- 汇承4.0蓝牙BLE串口助手HC-COM的使用方法及出错的原因和改正方法
热门文章
- vs怎么设置php文件调试,使用vs code编辑调试php配置的方法
- 计算机网络中st是什么,计算机组成中ST 是指什么
- mysql三个字段最优索引_mysql 多列索引优化
- 场地测量的方法和程序_建筑施工测量的内容与方法
- python os.system返回值_python os.system()返回值判断
- linux ping IP地址与telnet 测试IP端口
- ftp上传当天文件的方法_ftp自动上传文件,ftp自动上传文件的配置方法及使用教程...
- golang打包HTML为Android,使用Go开发Web服务,并打包html/js/css等静态资源文件
- php数组操作之合并相同键名的值,排序,排重,去空值等
- Java程序员必看!2021Java大厂面试知识分享