外包干了1年....字节跳动面试高频考点,懒加载

在这里插入图片描述

一、文章内容

  • 什么是懒加载
  • 懒加载的优点
  • 什么时候使用懒加载
  • 学习懒加载前置内容
  • 实战懒加载图片

二、什么是懒加载?

  • 从语法角度分析懒加载,懒是adj形容词,加载是名词;或者懒看为副词,加载作为动词,这样就能理解懒加载了就是懒懒的/地加载,更通俗的讲就是通过一种手段来加载.就是一个新名词并不是新的技术.

  • (懒加载(Load On Demand)是一种独特而又强大的数据获取方法,它能够在用户滚动页面的时候自动获取更多的数据,而新得到的数据不会影响原有数据的显示,同时最大程度上减少服务器端的资源耗用。)

  • 那到底是什么技术呢?就是通过JavaScript代码监听列表scroll滚动然后改变可见区域列表的内容,从而实现懒加载.

三、懒加载的优点

  1. 增强用户体验
  2. 减少http的请求
  3. 减少服务器端压力
  4. 服务器的按需加载
  5. 对系统的内存占用率会减少

1.如何增增强用户体验呢?

答案:
当使用懒加载的时候可以降低服务器响应时间,然后浏览器性能不会达到巅峰,不会假死.

2.懒加载如何减少http的请求?

答案:
当一个页面有1000张图片的时候,用户访问该网页,浏览器一下子就会加载1000张图片,访问1000次服务器,假设用户只看到了前10张图片,那么后999张图片是不是就白白加载了?使用懒加载可以很好的讲服务器资源利用好同时减少http的响应. (包含2-3-4)

3.如何减少系统内存的占用率?

答案:
当你使用懒加载无疑是用多少加载多少,不是一下子都加载到内存,一点点加载所以会减少内存的占用率.

4.如何减少代码呢?

四、什么时候使用懒加载

就一句话当你需要请求的资源比较多但是又不需要一次性都加载完毕,用户需要多少加载多少,满足这俩就可以放心使用懒加载了.当我们要访问的数据量过大时,明显用缓存不太合适,也要优先使用懒加载.

比如电商搜索商品页面,百度搜索页…

五、学习懒加载前置内容

会写基本html页面,然后写一一点css样式,jss的话会操作dom就行了,基础页面就不罗嗦了,直接说js代码.

1.这个函数是获取html的高度 document.documentElement.clientHeight.

2.这个函数是JavaScript中Window自带的延迟函数setTimeout,可以让一段JavaScript代码按照一定的时间进行延迟执行.

3.使用这个函数可以获取所有的类名为参数1的标签 document.querySelectorAll,可以按标签查,可以按照类名,也可以按照子孙关系查比如div下的p (div > p).

4.数组的遍历for(i of list),使用该用法进行数组的内容遍历.

    let list = [1,2,3];for (item of list){console.log(itme); // 1 2 3 }

5.这个函数可以获取某个标签的rect值:x,y轴数值,宽度、高度、TOP和bottom、left、right值.如图1所示.getBoundingClientRect()

image.png

图1 rect值

6.这个函数获取某个标签的属性值.getAttribute()

7.这个函数是监听页面事件,主要监听滑动快滚动,addEventListener常见的有click和mousemove…

六、 实战懒加载图片

HTML代码,第一块代码中的ol是页面中首先加载的图片.下面是预加载的一些图片.其中src 是图片的路径,data-original是真实图片的路径.实际情况中第二个ol代码可以通过JavaScript代码自动生成.

 <ol><li><img class="rwo" src=" " alt="" data-original="21.jpg"></li><li><img class="rwo" src=" " alt="" data-original="22.jpg"></li><li><img class="rwo" src=" " alt="" data-original="23.jpg"></li></ol><ol><li><img  src=" " alt="" data-original="1.jpg"></li><li><img  src=" " alt="" data-original="2.jpg"></li><li><img  src=" " alt="" data-original="3.jpg"></li><li><img  src=" " alt="" data-original="4.jpg"></li><li><img  src=" " alt="" data-original="5.jpg"></li><li><img  src=" " alt="" data-original="6.jpg"></li></ol>  

CSS代码设置img 的基本样式.

img {width: 400px;height: 300px;display: block;}.row{width: 300px;height: 400px;}

关键JavaScript代码核心代码都在后面加了注释.

   let view = document.documentElement.clientHeight; // 获得窗口可视高度console.log(view);function fn1(){let imgs = document.querySelectorAll('img');  // 获得所有imgvar i = 1 ;for (let item of imgs) { // 遍历 img// 显示图片出现在浏览器的位置let rect = item.getBoundingClientRect(); // 获得img 的窗口高度console.log( i ,  rect);i+=1if (rect.bottom >= 0 && rect.top < view) {  // 判断img 标签的 可视窗口item.src = item.getAttribute('data-original') //设置src}}}fn1();//调用函数document.addEventListener('scroll',fn1); //监听窗口滚动事件事实更新可视区域的img        

下面是懒加载的网络请求过程.

 <ol><li><img class="rwo" src=" " alt="" data-original="21.jpg"></li><li><img class="rwo" src=" " alt="" data-original="22.jpg"></li><li><img class="rwo" src=" " alt="" data-original="23.jpg"></li></ol><ol><li><img  src=" " alt="" data-original="1.jpg"></li><li><img  src=" " alt="" data-original="2.jpg"></li><li><img  src=" " alt="" data-original="3.jpg"></li><li><img  src=" " alt="" data-original="4.jpg"></li><li><img  src=" " alt="" data-original="5.jpg"></li><li><img  src=" " alt="" data-original="6.jpg"></li></ol>

在这里插入图片描述

图2 懒加载网络请求

从图2中我们可以看到所有的图片资源,并不是一打开网站就都加载出来,而是随着滚动条滚动动态加载图片资源,也帮助我们验证了懒加载的优点.

七、总结

通过本文的阅读基本可以了解懒加载的本质以及懒加载的使用场景,以及懒加载的实战情况,如果有不懂的地方,自己琢磨一下或者留言.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/624418.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

单例模式五种写法

单例模式五种写法 单例模式有五种写法&#xff1a;饿汉、懒汉、双重检验锁、静态内部类、枚举. 单例模式属于设计模式中的创建型模式 一、单例模式应用场景 windows的task manager(任务管理器)就是很典型的单例模式; windows的recycle bin(回收站)也是典型的单例应用&#…

ENVI实战—一文学会使用传感器自带信息配准工具进行几何校正

实验1&#xff1a;学会使用传感器自带信息配准工具 目的&#xff1a;利用ENVI的传感器自带信息配准工具&#xff0c;掌握几何校正的一般方法。 过程&#xff1a; 1.对MODIS影像进行校正&#xff1a; ①读取影像&#xff1a;打开文件&#xff0c;点击“打开为”&#xff0c;…

Docker安装xxl-job分布式任务调度平台

文章目录 Docker安装xxl-job分布式任务调度平台1.xxl-job介绍2. 初始化“调度数据库”3、docker挂载运行xxl-job容器3.1、在linux的opt目录下创建xxl_job文件夹&#xff0c;并在里面创建logs文件夹和application.properties文件3.2、配置application.properties文件&#xff0c…

Python对txt文本文件内容进行替换,以便通过Origin进行数据分析

因为要使用Origin进行数据分析&#xff0c;数据集为单行文本逗号隔开&#xff0c;无法直接复制粘贴到Origin中&#xff0c;故为此整理了一下代码&#xff0c;方便后续直接使用。 一、任务需求 有个1.txt文档文件里面是一行数据信息&#xff0c;要将其规整为每行一个数据&…

Spring学习(二)

图解&#xff1a; 2.核心容器总结 2.2.1 容器相关 BeanFactory是IoC容器的顶层接口&#xff0c;初始化BeanFactory对象时&#xff0c;加载的bean延迟加载 ApplicationContext接口是Spring容器的核心接口&#xff0c;初始化时bean立即加载 ApplicationContext接口提供基础的be…

Linux:编译器 - gcc

Linux&#xff1a;编译器 - gcc gcc概述语言发展史gcc的编译过程预处理编译汇编 gcc的链接过程动态库与静态库 gcc概述 GCC&#xff08;英文全拼&#xff1a;GNU Compiler Collection&#xff09;是 GNU 工具链的主要组成部分&#xff0c;是一套以 GPL 和 LGPL 许可证发布的程…

Web APP设计:将多个相近的机器学习模型融合到一个Web APP中

将多个相近的机器学习模型融合到一个Web APP中 FUSE-ML是一个用于预测腰椎融合术后效果的APP&#xff0c;它可以做出三个不同的结论&#xff0c;分别评价术后的腰痛、腿痛和日常功能是否提高。 这估计是部署了三个机器学习模型在这个APP中&#xff0c;因为一个机器学习模型仅…

【Java开发指南 | 第四篇】Java常量、自动类型转换、修饰符

读者可订阅专栏&#xff1a;Java开发指南 |【CSDN秋说】 文章目录 Java常量自动类型转换Java修饰符 Java常量 常量在程序运行时是不能被修改的。 在 Java 中使用 final 关键字来修饰常量&#xff0c;声明方式和变量类似&#xff1a; final double PI 3.1415927;自动类型转换…

【解读】《中华人民共和国网络安全法》:所有IT从业者都应知应懂

随着网络的快速发展&#xff0c;当今社会存在的网络安全问题也是接踵而来&#xff1a;网络入侵、网络攻击等非法活动威胁信息安全&#xff1b;非法获取公民信息、侵犯知识产权、损害公民合法利益&#xff1b;宣扬恐怖主义、极端主义&#xff0c;严重危害国家安全和社会公共利益…

电机控制器电路板布局布线参考指导(五)

电机控制器电路板布局布线参考指导&#xff08;五&#xff09;大容量电容和旁路电容的放置 1.大容量电容的放置2.电荷泵电容器3.旁路电容/去耦电容的放置3.1 靠近电源3.2 靠近功率器件3.3 靠近开关电流源3.4 靠近电流感测放大器3.5 靠近稳压器 tips&#xff1a;资料主要来自网络…

如何把音频转视频?MP3转换成MP4怎么操作?快来和小编一起学习吧

小伙伴们都知道mp3是最常用的音频文件格式&#xff0c;而mp4是最常用的视频文件格式。有时候为了方便mp3和mp4文件的时候&#xff0c;可能需要将mp3文件转换成mp4视频格式&#xff0c;遇到这种情况时候&#xff0c;很多小伙伴却不知道如何操作。今天小编就为大家介绍2个简单的方…

对桥接模式的理解

目录 一、背景二、桥接模式的demo1、类型A&#xff08;形状类型&#xff09;2、类型B&#xff08;颜色类型&#xff09;3、需求&#xff1a;类型A要使用类型B&#xff08;如&#xff1a;红色的方形&#xff09;4、Spring的方式 一、背景 在《对装饰器模式的理解》中&#xff0…