双缓存、DOM、虚拟DOM

501 阅读1分钟

一、双缓存

为什么要使用双缓存?

一个图形从计算到最后生成是一个需要大量计算的过程,所以显示器很难一次从显示缓冲区中取到完整的数据,都是一部分一部分取到的,而数据的写入也是分多次的,所以如果直接写入到显示缓冲区中,那么显示器一部分一部分的读取,在用户看来,就是页面的闪烁,和渲染的不连贯,所以使用双缓存。

**双缓存,**当渲染进程渲染完图块之后,发送命令给浏览器主进程,浏览器主进程将生成的图块发到后缓冲区中,每秒前后缓冲区调换60次,显示器刷新60次,后缓存区中存入的数据较多,所以不会像使用但缓存区那样,造成页面的闪烁和卡顿。

二、DOM

在HTML解析html文件的时候,会生成一个DOM树,例如:

<!DOCTYPE html>
<html>  
   <head>    
      <title>测试</title>    
      <meta charset="UTF-8" />  
   </head>  
   <body>    
      <div>我是测试呀!</div>  
   </body>
</html>

该HTML文件生成的DOM结构是这样的:

当我们使用js操作DOM时,会造成重新渲染,这样的成本是非常大的,因此提出了虚拟DOM的概念。

三、MVC模式

juejin.cn/post/699363…

四、虚拟DOM

基本思想

  • 用js对象表示DOM结构,并生成一个DOM树。
  • 当DOM更新时,对该js对象进行更改,并生成一个新的DOM树,此时页面并没有更新。
  • 新、旧js对象进行比较,记录差异,并更新的旧的DOM树上。