美文网首页
简单几句话,知道什么是回流重绘、vue虚拟dom、diff算法和

简单几句话,知道什么是回流重绘、vue虚拟dom、diff算法和

作者: 米卡卡米 | 来源:发表于2022-02-23 17:18 被阅读0次

1.什么是vue虚拟dom。先知道什么是dom树。
众所周知,一个页面形成的流程。(顺便聊一下回流和重绘)
(1) 解析 HTML===>生成DOM树
(2) 解析CSS===>生成CSSDOM树
(3) Render Tree ===> 从Dom树的根节点开始遍历每个可见的节点(因为这里面有display:none、scrpi等的,不被遍历。)
对于每个可见的节点,找到其对应的CSSDOM规则,并且应用。
生成Render Tree 。
fine,问题来了,什么是回流呢?就是在生成render Tree 的时候,有的CSS涉及到了HTML的尺寸(width/height)、布局改变、隐藏等。详细的可以去搜一下怎么会造成回流。<h3>所有的页面都至少会有一次回流,因为第一次生成render tree一定会回流</h3>
Render Tree生成后,layout(布局)就完成了开始绘制(添加属性,类似于颜色啊,大小啊之类的不会影响布局的属性)。如果说不出意外你不去改的话这辈子和个Render Tree就永远是这个树了。HTML页面就渲染结束了。
但是如果你想改。好嘛,我们就要开始判断你改的是什么了。如果说是影响布局的,那就是回流===>重绘
如果说你只想改个颜色啥的那就直接是重绘,没有回流。
<h3>杰伦:回流必然会带来重绘,但是重绘不一定会回流</h3>
关于如何优化,可以搜索回流和重绘
参考图:


更新

好了,简单的理解了一些html解析和dom树的生成流程。就可以解释什么是虚拟dom了。
虚拟dom也还是那个dom。那为啥不用真实的dom呢?因为真实的DOM你一操作,它立马给你回流重绘,可能你有10个事件在等着干,一个个都要回流重绘一遍太影响性能了。
(高光打过来!)虚拟dom就站出来了。
虚拟dom:如果有10次更新dom的动作,虚拟dom不会立即操作dom,而是将这10次更新的内容储存起来,通过diff算法,把新的dom(vue刚构造的虚拟dom)和旧的dom(可能是页面上现在显示的真实的dom)进行对比。然后渲染对比完的DOM。
问题来了:什么是diff呢?这是一个算法,有兴趣的可以自己搜一下详细了解诶。我这里只是简单的介绍说这个东西就是 :头头对比。肚子肚子对比。脚脚对比。同级对比,不会跨级对比。就是我的新头和我的旧头对比。我的新肚子和我的旧肚子对比。对比完了去页面上生成一个新的我。


diff算法简单理解

总结一下:服务器返回HTML文本===>浏览器解析===>VUE构建虚拟DOM(beforeMount生命周期之前生成,在beforeMount执行renderh函数,生成template模板)===>数据更新,生成新的虚拟dom,使用diff算法对比两个虚拟dom的区别在patch的阶段发生变化的dom节点进行个更新。

上面提到了patch阶段,顺便说一下key diff算法会通过key可以判断这两个虚拟dom是不是同一个dom,所以我们key尽量都要写上,并且尽量不要使用索引作为key。可以使用 'xx-index' 方式写key。方便你我它~~

好了。本文over以上都是自己复习的时候总结的内容,如果有问题请留言Thanks♪(・ω・)ノ

相关文章

  • 简单几句话,知道什么是回流重绘、vue虚拟dom、diff算法和

    1.什么是vue虚拟dom。先知道什么是dom树。众所周知,一个页面形成的流程。(顺便聊一下回流和重绘)(1) 解...

  • vue系列---vue-diff

    1.vue-diff 是什么? 提到vue的diff算法就不得不提一个名词 虚拟dom(Virtual DOM) ...

  • 第十七天

    1.你怎么理解vue中的diff算法? diff算法是虚拟DOM技术的必然产物:通过新旧虚拟DOM作对比(即dif...

  • 虚拟dom和diff算法

    虚拟DOM和diff算法 diff:精细化比对最小量更新 真实DOM和虚拟DOM 虚拟DOM:用JavaScrip...

  • 深入理解react中的虚拟DOM、diff算法

    文章结构: React中的虚拟DOM是什么? 虚拟DOM的简单实现(diff算法) 虚拟DOM的内部工作原理 Re...

  • 理解vue2.x之diff算法

    了解diff算法前,应该先了解虚拟DOM(VNode),在vue中是先创建VNode,再通过diff算法看哪个节点...

  • Vue3 源码解析(五):Patch 算法

    与 React 一样,Vue 在处理虚拟 DOM 的更新时,也有自己的 diff 算法 —— patch。 什么是...

  • React 虚拟dom+diff算法

    验证:虚拟DOM+Dom diff算法:最小化页面重绘 例子: 这个例子可以说明,page中的date在更新的时候...

  • react VS Vue diff算法

    react diff diff算法的作用:数据更改,生成相应的虚拟DOM,与真实DOM作对比,通过diff算法,对...

  • Vue

    虚拟DOM重绘/回流 表达式 Vue1.0中:单次插值 :{{* val}}值插入后将不能改变HTML插值 :{{...

网友评论

      本文标题:简单几句话,知道什么是回流重绘、vue虚拟dom、diff算法和

      本文链接:https://www.haomeiwen.com/subject/dgiolrtx.html