| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> JavaScript知识库 -> React懒加载:页面多图片加载优化 -> 正文阅读 |
|
[JavaScript知识库]React懒加载:页面多图片加载优化 |
懒加载:延迟加载,当图片出现在可视区域内,再去进行图片加载,以提升因图片过多引起的加载缓慢的页面加载速度。 一、<image>标签loading属性 image标签自带一个loading属性,这个属性有2个值
该属性也可以进行懒加载,但是该属性开启的懒加载会加载两到三个可视页面的图片,不止当前可视区域的图片进行了加载。 兼容性: 二、懒加载 根据原理:当图片出现在可视区域内,再去进行图片加载。需要对滚动进行监控,并判断图片是否进入可视区域。同时我们可以将可视区域的范围增大,再即将进入可视区域进行图片加载,减少进入可视区域后图片正在进行加载或者加载未完成的情况。 1、img标签
在img标签中我们不给src赋值,并将该处应加载的图片赋值给datasrc,之后需要赋值时将datasrc里的值赋值给src即可。 2、监控滚动条 以react的函数组件为例,在渲染时添加对scroll的监听,要注意在销毁阶段取消监听,减少页面负担。
其中checkImages函数是用来给img标签的src进行赋值。当img的src属性为空是,img将不会进行图片加载的操作,只有当你给src赋值以后她才会对图片进行请求,我们也是利用这一特性去进行懒加载。
在其中我们获取页面所有的img标签,并对其进行判断,其中isInClient函数是对图片的位置判断,用src是否有值来判断其是否加载过图片,如果有则不进行再次赋值,避免出现重复加载的情况。 注意: 我们渲染时需要先调用一次checkImages函数,而在第一段代码中的setTimeout就是做了这个事情,这个操作是为了自动显示出第一个可视页面的图片加载,即没有滚动前出现的页面的图片加载,这一步十分重要。 其中这里采用了setTimeout进行了1ms的延迟调用是为了保证dom节点都存在,如果不使用者1ms的延迟,可能在checkImages函数中无法获取到img的节点,也十分重要,在函数组件中出现了这种情况,但类组件中还未试验过。 2、图片位置判断是否需要加载 在checkImages函数中有个函数isInClient,是用来判断图片是否进入了可是区域。
在这里,我的可视区域高度的判断不止是当前窗口的可是区域,还往上下都延伸了半个可视区域,这样判断是为了上面说的减少进入可视区域后图片正在进行加载或者加载未完成的情况。 至此我的懒加载过程全部完成,如有错误,欢迎指正。 |
|
JavaScript知识库 最新文章 |
ES6的相关知识点 |
react 函数式组件 & react其他一些总结 |
Vue基础超详细 |
前端JS也可以连点成线(Vue中运用 AntVG6) |
Vue事件处理的基本使用 |
Vue后台项目的记录 (一) |
前后端分离vue跨域,devServer配置proxy代理 |
TypeScript |
初识vuex |
vue项目安装包指令收集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 13:39:54- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |