前端性能优化(节流、防抖、图片懒加载)

谈谈面试常考题:懒加载,防抖,节流(方法实现详解) 最近在学习中确实收获了挺多东西,其中我觉得有必要拿来进行分享一下的就是懒加载了,还有相关的防抖和节流。因为在浏览器中这些都是属于很常见的性能优化,面试也是常考题。话不多说。发车! 阅读详情

前端性能优化

1.性能优化原则

  1. 多使用内存、缓存
  2. 减少CPU计算量,减少网络加载耗时
  3. 空间换时间

2.节流throttle
拖拽一个元素时,要随时拿到该元素被拖拽的位置
直接用drag事件,则会频繁触发,很容易导致卡顿
节流:无论拖拽速度多快,都会每隔100ms触发一次

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>手写节流throttle</title>
    <style>
        #div1 {
            border: 1px solid #ccc;
            width: 200px;
            height: 100px;
        }
    </style>
</head>
<body>
    <div id="div1" draggable="true">可拖拽</div>

    <script>
        const div1 = document.getElementById('div1')

        // 1.节流使用
        // let timer = null
        // div1.addEventListener('drag', function (e) {
        //     if (timer) {
        //         return
        //     }
        //     timer = setTimeout(() => {
        //         console.log(e.offsetX, e.offsetY)

        //         timer = null
        //     }, 500)
        // })

        // 2.封装节流
        function throttle(fn, delay = 100) {
            let timer =null
            return function () {
                if (timer) {
                    return
                }
                timer = setTimeout(() => {
                    fn.apply(this, arguments)
                    timer = null
                }, delay)
            }
        }

        // 使用
        div1.addEventListener('drag', throttle(function (e) {
            console.log(e.offsetX, e.offsetY)
        }, 100))
    </script>
</body>
</html>

3.防抖debounce
监听一个输入框的,文字变化后触发change事件
直接用keyup事件,则会频繁触发change事件
防抖:用户输入结束或暂停时,才会触发change事件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>手写防抖debounce</title>
</head>
<body>
    <input type="text" id="input1">
    
    <script>
        const input1 = document.getElementById('input1')

        // 1.防抖使用
        // let timer = null
        // input1.addEventListener('keyup', function () {
        //     if (timer) {
        //         clearTimeout(timer)
        //     }
        //     timer = setTimeout(() => {
        //         // 模拟触发 change事件
        //         console.log(input1.value)
        //         // 清空定时器
        //         timer = null
        //     }, 500)
        // })

        // 2.封装防抖
        function debounce(fn, delay = 500) {
            // timer 是闭包中的
            let timer = null
            return function () {
                if (timer) {
                    clearTimeout(timer)
                }
                timer = setTimeout(() => {
                    fn.apply(this, arguments) // arguments函数传的参
                    // fn() // 不传参写法
                    timer = null
                }, delay)
            }
        }
        // 使用
        input1.addEventListener('keyup', debounce((arguments) => {
            console.log(arguments)
            console.log(input1.value)
        }), 600)
    </script>
</body>
</html>

4.图片懒加载

<img id="img1" src="xxx.png" data-realsrc="abc.png"/>
<script type="text/javascript>
	var img1 = document.getElementById('img1')
	img1.src = img1.getAttribute('data-realsrc')
</script>
Windows下用Docker快速搭建SearXNG私有搜索引擎(附Dify集成配置) 本文详细介绍了在Windows环境下使用Docker快速搭建SearXNG私有搜索引擎的完整流程,包括环境准备、容器化部署、安全配置优化以及与Dify平台的深度集成方法。通过分步指导和实用配置示例,帮助开发者构建兼具隐私保护和AI增强能力的本地化搜索解决方案,特别适合需要定制化搜索服务的应用场景。 阅读详情

相关推荐

AI工具如何提升产品经理工作效率

AI工具在现代产品管理中扮演着越来越重要的角色,从需求挖掘到原型设计再到交付物制作,AI技术正在重塑产品经理的工作流程。通过自然语言处理(NLP)和机器学习(ML)技术,AI工具能够自动化处理大量重复性任务,如用户访谈转录、竞品分析、原型生成等,显著提升工作效率。以ChatGPT和Notion AI为例,这些工具可以快速生成结构化分析框架和PRD初稿,将传统需要数小时甚至数天的工作压缩到几分钟内完成。在产品设计阶段,工具如Uizard和Galileo AI能够根据文本描述自动生成可交互原型,大幅缩短设计探索

weixin_29194817的博客 241

防抖、节流 和 预加载、懒加载

目录 1. 防抖 节流 2. 预加载 3. 懒加载 (一)防抖 节流 1. 防抖 对于短时间内连续触发的事件(如滚动事件),防抖的含义就是让某个时间期限(如上面的1000毫秒)内,事件处理函数只执行一次。 **防抖实现思路:**在第一次触发事件时,不立即执行函数,而是给出一个期限值比如200ms,然后: 如果在200ms内没有再次触发滚动事件,那么就执行函数 如果在200ms内再次触发滚动事件,...

林夏天的博客 995

图数据挖掘 ECC K-core core number truss number clique

K-core:什么叫k-core,给定一个正整数k(k>=0),k-core是一个G的最大子图(也就是说k-core是一个图的限制),将这个子图定义为Hk,对于Hk中的每个顶点v,他的度数都是大于等于k的。 k-core是内嵌的,如下图所示,集合{ABCD}是H3,也就是3-core的子图。而集合{ABCDE}是H2,也就是2-core的子图,集合{ABCDEGF}是H1,也就是1-core的子图,而从集合的角度来讲H3<H2<H1。 core number:什么叫kcor

weixin_45193103的博客 1685

图片懒加载&&防抖节流

为什么要懒加载 对页面加载速度影响最大的就是图片,一张普通的图片可以达到几M的大小,而代码也许就只有几十KB。当页面图片很多时,页面的加载速度缓慢,几S钟内页面没有加载完成,也许会失去很多的用户。 所以,对于图片过多的页面,为了加速页面加载速度,所以很多时候我们需要将页面内未出现在可视区域内的图片先不做加载, 等到滚动到可视区域后再去加载。这样子对于页面加载性能上会有很大的提升,也提高了用户体验。 懒加载的原理 当图片不在可视区域内时,统一设置img的src为指定图片src='default.png

qingbaicai的博客 461

ComfyUI全自动换装工作流:从零到一的实战指南

本文提供了一份详细的ComfyUI全自动换装工作流实战指南。从环境配置、模型准备到核心工作流架构的逐步拆解,手把手教你搭建一条高效的AI换装流水线。文章深入解析了从输入、预处理、融合到输出的四步核心逻辑,并分享了关键参数调优与进阶技巧,旨在帮助电商从业者、内容创作者及AI爱好者轻松实现高质量、高效率的“一键换装”。

weixin_29198045的博客 897

5分钟搞定Vivado IP核的VCS仿真:从Export脚本到Verdi波形查看全流程

本文详细介绍了如何利用Vivado的Export Simulation功能,快速搭建Vivado IP核的VCS与Verdi联合仿真环境。通过自动化脚本生成、FSDB波形配置及高效调试技巧,实现从工程导出到波形查看的全流程,大幅提升FPGA验证效率,尤其适合IC验证工程师和竞赛团队。

weixin_29306261的博客 481

web前端性能优化

一、页面内容优化 1.减少http请求次数 2.减少DNS查询次数 3.避免页面跳转 4.缓存ajax 5.延迟加载 6.预加载 7.减少dom元素数量 8.减少iframe数量 9.避免404 二、css优化 1.将样式表置顶 2.用link代替@import 3.避免使用filters 4.css文件合并压缩 三、js代码优化 1.将脚本置底 2.使用外部js文件和css文件 3.去除重复脚本,避免重复的资源请求 4.减少dom访问(修改和访问DOM元素会造成页面的重绘和重排,循环对DOM操作更是减慢页

Sweet_Waf的博客 1064

Unity游戏开发客户端Unity基础

Unity游戏开发客户端面经 之 Unity 篇

Sea3752的博客 2万+

前端性能优化

web性能优化、前端性能优化、web性能指标、性能测量、Lighthouse

qq_42943914的博客 3371

基于MATLAB的PDT DMR物理层仿真

PDT DMR物理层仿真的目标是评估系统的误码率(Bit Error Rate,BER),以及验证和优化各种调制方案、编码方案和信道模型。下面将介绍如何进行PDT DMR物理层的仿真,并提供相应的MATLAB源代码。通过上述步骤,我们可以进行基于MATLAB的PDT DMR物理层仿真,并评估系统的性能。根据实际需求,我们可以修改仿真参数和添加更复杂的信道模型,以更全面地评估系统性能。最后,我们可以将仿真结果进行可视化和分析。首先,我们需要设置仿真的参数,包括调制方案、编码方案、信道模型和信噪比等。

TechPulseZ的博客 459

AI 模型优化与部署秘籍:从理论到实战

本文系统介绍了AI模型优化与部署的关键技术。模型剪枝通过去除冗余参数减小模型规模,量化技术降低计算精度以提升效率,蒸馏方法实现知识从大模型到小模型的迁移。TensorRT通过层融合和精度校准加速GPU推理,ONNX格式实现跨框架模型转换,TFLite则优化移动端部署。这些技术共同解决了AI模型在资源受限环境下的部署难题,显著提升了模型运行效率,为AI应用落地提供了重要支撑。

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 246

Web前端性能优化总结

网站的划分一般为二:前端和后台。我们可以理解成后台是用来实现网站的功能的,比如:实现用户注册,用户能够为文章发表评论等等。而前端呢?其实应该是属于功能的表现。并且影响用户访问体验的绝大部分来自前端页面。而我们建设网站的目的是什么呢?不就是为了让目标人群来访问吗?所以我们可以理解成前端才是真正和用户接触的。除了后台需要在性能上做优化外,其实前端的页面更需要在性能优化上下功夫,只有这样才能给我们的用户带来更好的用户体验。就好像,好多人问,男人在找女朋友的时候是不是只看外表,一些智慧的男人给出了这样的回答:脸蛋和

一如既往的准备文章 451

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

新手小白零基础前端性能优化:节流防抖与图片懒加载实战教程(含代码)

在前端开发中,性能优化是一个永恒的话题。良好的性能不仅能提升用户体验,还能减少服务器压力,降低带宽成本。本文将介绍三种常见的前端性能优化技术:函数节流(Throttle)、函数防抖(Debounce)和图片懒加载(Lazy Load),并通过代码示例展示如何实现它们。

2401_85751940的博客 1328

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

前端性能优化:利用防抖节流实现图片懒加载

防抖节流实际应用

TylerYue的博客 316

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

前端性能优化-图片懒加载(防抖、节流)

懒加载使用场景 在一些图片量比较大的场景(电商首页,小程序首页等),如果我们打开页面时就加载所有的图片,那势必会导致页面的卡顿以及白屏,给用户不好的体验,导致用户流失。 但是我们仔细想一下,用户真的需要我们显示所有图片一起展示吗?其实并不是,用户看到的只是浏览器可视区域的内容。所以从这个情况我们可以做一些优化,只显示用户可视区域内的图片,当用户触发滚动的瞬间再去请求显示给用户。 懒加载的思路 img 标签有自定义属性 data-src 首屏展示可视区域内的图片 src 值 替换为 data-src

Mr_linjw的专栏 1568

html图片滚动_前端性能优化-图片懒加载(防抖、节流)

首先 小学生在这里 祝大家 元旦快乐!!!!!懒加载使用场景在一些图片量比较大的场景(电商首页,小程序首页等),如果我们打开页面时就加载所有的图片,那势必会导致页面的卡顿以及白屏,给用户不好的体验,导致用户流失。 但是我们仔细想一下,用户真的需要我们显示所有图片一起展示吗?其实并不是,用户看到的只是浏览器可视区域的内容。所以从这个情况我们可以做一些优化,只显示用户可视区域内的图片,当用户触发滚动的...

weixin_39914938的博客 291

防抖与节流方案_前端性能优化-图片懒加载(防抖、节流)的几种方案

懒加载使用场景在一些图片量比较大的场景(电商首页,小程序首页等),如果我们打开页面时就加载所有的图片,那势必会导致页面的卡顿以及白屏,给用户不好的体验,导致用户流失。但是我们仔细想一下,用户真的需要我们显示所有图片一起展示吗?其实并不是,用户看到的只是浏览器可视区域的内容。所以从这个情况我们可以做一些优化,只显示用户可视区域内的图片,当用户触发滚动的瞬间再去请求显示给用户。懒加载的思路img 标签...

weixin_39607873的博客 378

Web前端性能优化——防抖处理/节流处理/图片懒加载

前端性能优化 没有标准答案,越全面越好,如果做不到,就尽量从前端角度考虑 原则 多使用内存,缓存(以空间换时间,这种思想也适用于后台)访问频繁,变化不大 减少 CPU 计算量,减少网络加载耗时 入手 1、 提升加载速度 减少资源体积:压缩代码(如QQ的图片压缩等) 减少访问次数:合并代码,SSR服务端渲染、缓存等 使用更快的网络:CDN CSS 放在 head,JS 放在 body 最下面 尽早开始执行 JS,用 DOMContentLoaded 触发 懒加载(图片懒加载,上滑懒加载) 2、 提升渲

qq_50613817的博客 463

5图片加载优化_前端性能优化-图片懒加载(防抖、节流)

首先 小学生在这里 祝大家 元旦快乐!!!!!懒加载使用场景在一些图片量比较大的场景(电商首页,小程序首页等),如果我们打开页面时就加载所有的图片,那势必会导致页面的卡顿以及白屏,给用户不好的体验,导致用户流失。 但是我们仔细想一下,用户真的需要我们显示所有图片一起展示吗?其实并不是,用户看到的只是浏览器可视区域的内容。所以从这个情况我们可以做一些优化,只显示用户可视区域内的图片,当用户触发滚动的...

weixin_27015733的博客 151

前端性能优化技巧 - 附示例

在此列举一些前端开发中常用的性能优化技巧 - 附示例

m0_48968874的博客 257

前端性能优化篇(节流/防抖/懒加载)及前端开发必备的优化小知识

前端性能优化篇(原生JS实现)节流防抖图片懒加载常见的图片优化手段 哈喽哈喽!大伙们~我来分享、记录知识啦, 希望能够帮助到大家哈,有不足的地方,还请大佬多多关照下喔 那废话就不多说咯~咱这就去看看代码 节流 let Oinput=document.querySelector("#inp"); let flag=true; Oinput.oninput=function(){ if(!flag){ return; } flag=false; setTim

weixin_45476309的博客 748

前端八股文(三)—— 性能优化部分

懒加载也叫做延迟加载、按需加载,指的是在长网页中延迟加载图片数据,是一种较好的网页性能优化的方式。在比较长的网页或应用中,如果图片很多,所有的图片都被加载出来,而用户只能看到可视窗口的那一部分图片数据,这样就浪费了性能。函数节流是指规定一个单位时间,在这个单位时间内,只能有一次触发事件的回调函数执行,如果在同一个单位时间内某事件被触发多次,只有一次能生效。对于如何优化动画,我们知道,一般情况下,动画需要频繁的操作DOM,就就会导致页面的性能问题,我们可以将动画的。,之后一次性的将所有的子孙节点插入文档中。

weixin_71370424的博客 2020

性能优化 (节流 / 防抖/...)

节流、防抖、SEO优化、懒加载、浏览器缓存、压缩图片、前端路由跳转。使用gulp来合并压缩js,css代码。通过内容分发到网络,提高站点的访问速度,稳定性。减少重拍和重绘 节流:让事件函数隔一段时间触发一次。(应用场景:比如onscroll等高频率触发的事件中) // 函数节流 var canRun = true; document.onscroll...

banbiante5717的博客 276

【前端实习生备战秋招】—前端性能优化篇,建议收藏

PNG是一种比较新的图片格式,PNG-8是非常好的GIF格式替代者,在可能的情况下,应该尽可能的使用PNG-8而不是GIF,因为在相同的图片效果下,PNG-8具有更小的文件体积。JPEG的图片的优点是采用了直接色,得益于更丰富的色彩,JPEG非常适合用来存储照片,与GIF相比,JPEG不适合用来存储企业Logo、线框类的图。受限于 Node 是单线程运行的,所以 Webpack 在打包的过程中也是单线程的,特别是在执行 Loader 的时候,长时间编译的任务很多,这样就会导致等待的情况。

道阻且长,行则将至。 706

前端面试(6)防抖节流在图片懒加载中的应用

1、图片懒加载思想:滚动条在下滑的时候,img标签距离顶部的高度小于可见高度加滚动条高度,则进行图片加载; 2、防抖函数的应用:实施计算滚动条高度; 3、节流函数的应用:img标签小于可见高度加滚动条高度后,只需要执行一次图片加载。 ...

weixin_44356698的博客 142
上一篇: 将方法和变量绑定到window上操作
下一篇: vue中鼠标事件
TurtleOrange
博客等级 码龄9年 71粉丝 70原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值