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

2024-03-26 16:12

本文主要是介绍外包干了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中我们可以看到所有的图片资源,并不是一打开网站就都加载出来,而是随着滚动条滚动动态加载图片资源,也帮助我们验证了懒加载的优点.

七、总结

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

这篇关于外包干了1年....字节跳动面试高频考点,懒加载的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/849076

相关文章

Spring Boot 配置文件之类型、加载顺序与最佳实践记录

《SpringBoot配置文件之类型、加载顺序与最佳实践记录》SpringBoot的配置文件是灵活且强大的工具,通过合理的配置管理,可以让应用开发和部署更加高效,无论是简单的属性配置,还是复杂... 目录Spring Boot 配置文件详解一、Spring Boot 配置文件类型1.1 applicatio

SpringBoot启动报错的11个高频问题排查与解决终极指南

《SpringBoot启动报错的11个高频问题排查与解决终极指南》这篇文章主要为大家详细介绍了SpringBoot启动报错的11个高频问题的排查与解决,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一... 目录1. 依赖冲突:NoSuchMethodError 的终极解法2. Bean注入失败:No qu

SpringBoot项目启动报错"找不到或无法加载主类"的解决方法

《SpringBoot项目启动报错找不到或无法加载主类的解决方法》在使用IntelliJIDEA开发基于SpringBoot框架的Java程序时,可能会出现找不到或无法加载主类com.example.... 目录一、问题描述二、排查过程三、解决方案一、问题描述在使用 IntelliJ IDEA 开发基于

Oracle存储过程里操作BLOB的字节数据的办法

《Oracle存储过程里操作BLOB的字节数据的办法》该篇文章介绍了如何在Oracle存储过程中操作BLOB的字节数据,作者研究了如何获取BLOB的字节长度、如何使用DBMS_LOB包进行BLOB操作... 目录一、缘由二、办法2.1 基本操作2.2 DBMS_LOB包2.3 字节级操作与RAW数据类型2.

Android WebView无法加载H5页面的常见问题和解决方法

《AndroidWebView无法加载H5页面的常见问题和解决方法》AndroidWebView是一种视图组件,使得Android应用能够显示网页内容,它基于Chromium,具备现代浏览器的许多功... 目录1. WebView 简介2. 常见问题3. 网络权限设置4. 启用 JavaScript5. D

SpringBoot项目启动错误:找不到或无法加载主类的几种解决方法

《SpringBoot项目启动错误:找不到或无法加载主类的几种解决方法》本文主要介绍了SpringBoot项目启动错误:找不到或无法加载主类的几种解决方法,具有一定的参考价值,感兴趣的可以了解一下... 目录方法1:更改IDE配置方法2:在Eclipse中清理项目方法3:使用Maven命令行在开发Sprin

spring-boot-starter-thymeleaf加载外部html文件方式

《spring-boot-starter-thymeleaf加载外部html文件方式》本文介绍了在SpringMVC中使用Thymeleaf模板引擎加载外部HTML文件的方法,以及在SpringBoo... 目录1.Thymeleaf介绍2.springboot使用thymeleaf2.1.引入spring

关于Spring @Bean 相同加载顺序不同结果不同的问题记录

《关于Spring@Bean相同加载顺序不同结果不同的问题记录》本文主要探讨了在Spring5.1.3.RELEASE版本下,当有两个全注解类定义相同类型的Bean时,由于加载顺序不同,最终生成的... 目录问题说明测试输出1测试输出2@Bean注解的BeanDefiChina编程nition加入时机总结问题说明

Go语言使用Buffer实现高性能处理字节和字符

《Go语言使用Buffer实现高性能处理字节和字符》在Go中,bytes.Buffer是一个非常高效的类型,用于处理字节数据的读写操作,本文将详细介绍一下如何使用Buffer实现高性能处理字节和... 目录1. bytes.Buffer 的基本用法1.1. 创建和初始化 Buffer1.2. 使用 Writ

SpringBoot项目启动后自动加载系统配置的多种实现方式

《SpringBoot项目启动后自动加载系统配置的多种实现方式》:本文主要介绍SpringBoot项目启动后自动加载系统配置的多种实现方式,并通过代码示例讲解的非常详细,对大家的学习或工作有一定的... 目录1. 使用 CommandLineRunner实现方式:2. 使用 ApplicationRunne