学习前端面试知识(15)

防抖和节流怎么实现?

参考文章 彻底理清防抖和节流

防抖和节流都是用于控制函数执行频率的方法,防抖是在一定时间内只执行最后一次操作,节流是在一定时间内只执行一次操作,可以通过setTimeout和时间戳等方法实现。

防抖:确保在指定的时间间隔内,无论触发了多少次事件,只有最后一次事件会在该时间间隔结束后执行(触发事件n秒后才执行函数,结果在n秒内又触发事件,则会重新计算函数执行时间)

  • 核心逻辑:重置计时器,每次触发事件都会重置计时器
  • 执行时机:只有在用户停止触发事件指定时间间隔后,才会执行最后一次事件
  • 举例:在一台自动售货机里,商品价格不同,投入相应的硬币会自动选择相应的商品,但是为了避免还没投完就出商品,会给售货机设置延迟,延迟期间再投入硬币,售货机重新进入延迟,只有延迟过期后才会处理投进去的硬币。
<body>
<input type="text" id="search" placeholder="输入内容">
<ul id="suggestionsList"></ul>
<script>
function debounce(func,wait){let timeout;return function(...args){const content = this;clearTimeout(timeout);timeout = setTimeout(() => {func.apply(content,args);},wait)}
}const searchBox = document.getElementById("search");const search = debounce(function(query){console.log("search")
},1500)searchBox.addEventListener('input',function(event) {const query = event.target.value;search(query);
})
</script>

节流:确保在指定的时间间隔内,无论触发了多少次事件,只有第一次事件会被执行,后续事件在这个间隔中都不会执行

  • 核心逻辑:单次执行,忽略后续触发
  • 举例:在十字路口,交通信号灯每60秒变换一次,不论多少汽车通过,信号灯都不会更快的变化,即无论事件触发的频率多高,每个周期内只执行一次。
<head><meta charset="UTF-8"><title>Title</title><style>#contentList {list-style: none;padding: 0;overflow-y: auto;height: 300px; /* 根据需要调整这个高度 */background: #f9f9f9;}#contentList li {padding: 10px;border-bottom: 1px solid #ddd;background-color: white;}</style>
</head>
<body>
<ul id="contentList"><!-- 初始内容列表项 --><li>Item 1</li><li>Item 2</li><!-- 更多内容根据滚动加载 -->
</ul>
<script>
function throttle(func,limit){let inProgress = false;return function(){if(!inProgress){inProgress = true;setTimeout(() => {func.apply(this,arguments);inProgress = false;},limit);}}
}function loadMore(){const content = document.getElementById('contentList');if(content.scrollTop + content.clientHeight + 100 >= content.scrollHeight){console.log("加载更多内容");setTimeout(() => {for(let i = 0; i < 5; i++){const newItem = document.createElement('li');newItem.textContent = 'Item' + (content.children.length + 1);content.appendChild(newItem);}},1000)}
}const content = document.getElementById('contentList');content.addEventListener('scroll',throttle(loadMore,1000));for(let i = 2; i < 10; i++){const listItem = document.createElement('li');listItem.textContent = 'Item'+(i+1);content.appendChild(listItem);
}
</script>

vue生命周期

还是不太熟练,再记录下,参考vue生命周期

生命周期:从组件创建到组件销毁这段时间所经历的过程

  • beforeCreate
    • 组件创建前
    • 调用这个函数后创建组件实例
  • created
    • 组件创建后
    • 调用这个函数获得页面内容,准备渲染数据
  • beforeMount
    • 组件挂载数据前
    • 执行函数将数据渲染到页面上
  • mounted
    • 组件挂载数据后
    • 将data中的数据挂载到标签上
  • beforeUpdate
    • 更新数据前
    • 更新前会执行这个函数
  • updated
    • 更新数据之后
    • 内容更新后会调用这个函数
  • beforeDestroy
    • 销毁实例前
    • 执行完这个函数才会销毁当前实例
  • destroyed
    • 销毁实例后
    • 销毁实例后会执行这个函数,vue的生命周期结束

css中隐藏元素的方式

  • display:none
  • opacity:0
  • visibility:hidden
  • z-index,使用层叠顺序控制元素位置
  • 绝对定位将元素定位到页面之外,缺点是会出现横/竖拉条
  • 给固定的width,超出隐藏,可以结合white-space:nowrap不换行和text-overflow:ellipsis展示省略号,更详细的可以看这篇文章的最后一篇
  • 关于三个元素display opacity visibility的解说可以看这篇文章的倒数第二个

axios和ajax的区别

ajax是对原生XHR的封装,axios是Promise对ajax的封装,axios有的ajax都有,ajax有的axios不一定有

本地存储

常见的本地存储有cookie,localStorage和sessionStorage

  • 存储有效时间:
    • cookie的有效期可以设置,失效时间取决于设置时间。
    • sessionStorage有效期仅保存在当前会话中,即当前浏览器标签打开时有效,关闭后就会失效。
    • localStorage数据在浏览器关闭后仍然可以保留,知道手动清空或者删除
  • 发送是否携带
    • cookie:在前端给后端发送请求的时候会自动携带cookie中的数据
    • localStorage和sessionStorage不会随着HTTP请求发送到服务器,仅用于前端的存储和访问
  • 使用场景
    • cookie:常用于存储登陆验证信息,识别身份
    • sessionStorage:适用于需要临时存储数据,不希望数据在关闭页面后还保存的场景,比如表单填写等
    • localStorage:用于存储不易变动的数据,如用户偏好设置,缓存数据,减轻服务器压力

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

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

相关文章

去雾去雨算法

简单版 import cv2 import numpy as npdef dehaze(image):"""简单去雾算法&#xff0c;使用直方图均衡化来增强图像"""# 将图像转换为YUV颜色空间yuv_image cv2.cvtColor(image, cv2.COLOR_BGR2YUV)# 对Y通道&#xff08;亮度&#xff09;进行…

springsecurity 在web中如何获取用户信息(后端/前端)

一、SecurityContextHolder 是什么 SecurityContextHolder用来获取登录之后用户信息。Spring Security 会将登录用户数据保存在Session中。但是&#xff0c;为了使用方便,Spring Security在此基础上还做了一些改进&#xff0c;其中最主要的一个变化就是线程绑定。当用户登录成功…

4820道西医综合真题西医真题ACCESS\EXCEL数据库

本题库内容源自某出版物《西医综合真题考点还原与答案解析》&#xff0c;包含4千多道真题。这个数据库包含3个表&#xff0c;一个是分类表&#xff08;SECTION_BEAN&#xff09;&#xff0c;一个是题库主表&#xff08;QUESTION_INFO_BEAN&#xff09;&#xff0c;一个是选项表…

【网络】HTTP

在上一篇文章中&#xff0c;我们了解了 协议 的制定与使用流程&#xff0c;不过太过于简陋了&#xff0c;真正的 协议 会复杂得多&#xff0c;也强大得多&#xff0c;比如在网络中使用最为广泛的 HTTP/HTTPS 超文本传输协议 但凡是使用浏览器进行互联网冲浪&#xff0c;那必然…

【生物特征识别论文分享】基于深度学习的掌纹掌静脉识别

&#xff08;待更新&#xff09;基于深度学习的生物特征识别&#xff08;手掌静脉、手背静脉、手指静脉、掌纹、人脸等&#xff09;论文模型总结 。具体方法包括&#xff1a;基于特征表征、基于传统网络设计与优化、基于轻量级网络设计与优化、基于Transformer设计与优化、基于…

在ubuntu系统中对于msg文件编译后生成的头文件,在程序中include时是用<>还是““,哪个检索文件的效率更高

在 Ubuntu 系统中&#xff0c;对于 ROS 中的消息&#xff08;msg&#xff09;文件编译后生成的头文件&#xff0c;在程序中包含&#xff08;include&#xff09;时应使用 ""&#xff0c;而不是 <>。 通常&#xff0c;在 C/C 中&#xff0c;使用 <> 来包…

Leetcode 100.101.110.199 二叉树相同/对称/平衡 C++实现

Leetcode 100. 相同的树 问题&#xff1a;给你两棵二叉树的根节点 p 和 q &#xff0c;编写一个函数来检验这两棵树是否相同。 如果两个树在结构上相同&#xff0c;并且节点具有相同的值&#xff0c;则认为它们是相同的。 /*** Definition for a binary tree node.* struct T…

Python单例模式:深入解析与应用

在软件开发中&#xff0c;设计模式是解决问题和构建软件架构的模板和最佳实践。单例模式&#xff08;Singleton Pattern&#xff09;是设计模式中最简单也是最常用的一种。它确保一个类只有一个实例&#xff0c;并提供一个全局访问点来获取这个实例。这种模式在需要控制资源访问…

Error: Can not import paddle core while this file exists

背景 因为工作需要&#xff0c;原来的项目部署的电脑被征用&#xff0c;重新换了一个新电脑&#xff0c;重装了系统&#xff0c;今天在给一个使用ocr的项目进行环境配置的时候发现&#xff0c;无论安装哪个版本的paddlepaddle&#xff0c;总是可以安装成功&#xff0c;但是导入…

【模板方法】设计模式:构建可扩展软件的基石

本文主要介绍模板方法设计模式的定义、作用及使用场景 引言 在软件开发中&#xff0c;设计模式是解决常见问题的经过验证的解决方案。模板方法设计模式&#xff0c;作为行为型设计模式的一种&#xff0c;提供了一种在不牺牲灵活性的前提下定义算法框架的方法。 本文将深入探讨…

Vant 组件库在Vue3的使用

Vant 是一个轻量、可靠的移动端组件库&#xff0c;专为 Vue.js 框架设计&#xff0c;提供了丰富的组件来加速移动端应用的开发。以下是关于 Vant UI 组件库以及在 Vue 3 中的使用方法的介绍。 Vant 组件库介绍 Vant 组件库拥有以下特点&#xff1a; 轻量化&#xff1a;组件平…

第五题:最长回文子串(Longest Palindromic Substring)

题目描述&#xff1a; 给定一个字符串 s&#xff0c;找到 s 中最长的回文子串。 示例&#xff1a; 输入&#xff1a;s "babad" 输出&#xff1a;"bab" 或 "aba" 输入&#xff1a;s "cbbd" 输出&#xff1a;"bb" 要求…

开源接口自动化测试工具AutoMeter

AutoMeter是一款针对分布式服务和微服务API做功能和性能一体化的自动化测试平台。一站式提供项目管理&#xff0c;微服务&#xff0c;API接口&#xff0c;用例&#xff0c;环境管理&#xff0c;测试管理&#xff0c;前置条件&#xff0c;测试集合&#xff0c;变量管理&#xff…

【芯片设计- RTL 数字逻辑设计入门 9.4 -- Power Gating 在SoC 芯片电源完整性中的详细介绍】

文章目录 电源完整性简介电源完整性重要性电源完整性主要问题电源完整性问题优化什么是Power Gating?Power Gating的优势与挑战浪涌电流的产生与影响设计中的折中与优化电源完整性简介 电源完整性(Power Integrity, PI)是指在系统级设计中,确保电源分配网络(Power Distri…

kali安装

引言 Kali Linux 是一个基于 Debian 的 Linux 发行版&#xff0c;专门为渗透测试和安全审计而设计。它包含了大量的安全工具&#xff0c;如 Wireshark、Nmap、Metasploit 等&#xff0c;这些工具可以帮助安全专家和研究人员进行网络安全评估、漏洞检测和渗透测试。Kali Linux …

系统架构师(每日一练23)

每日一练 1.软件活动主要包括软件描述、()、软件有效性验证和()&#xff0c;()定义了软件功能及使用限制。答案与解析 问题1 A.软件模型 B.软件需求 C.软件分析 D.软件开发 问题2 A.软件分析 B.软件测试 C.软件演化 D.软件开发 问题3 A.软件分析 B.软件测试 C.软件描述 D.软…

进阶-5.锁

锁 1.概述2.全局锁3.表级锁3.1 介绍3.2 表锁3.3 元数据锁3.4意向锁 4.行级锁 1.概述 分类 按锁的粒度分类&#xff1a; 全局锁&#xff1a;锁住数据库中所有表表级锁&#xff1a;每次操作锁定整张表行级锁&#xff1a;每次操作锁定对应的行数据 2.全局锁 介绍 全局锁就是对…

第N11周:seq2seq翻译实战-Pytorch复现

任务&#xff1a; ●为解码器添加上注意力机制 一、前期准备工作 from __future__ import unicode_literals, print_function, division from io import open import unicodedata import string import re import randomimport torch import torch.nn as nn from torch impor…

Python中的变量:作用域与生命周期的秘密探索

引言 在编程的世界里&#xff0c;变量如同舞台上的演员&#xff0c;它们有着自己的“角色”——存储数据&#xff0c;也有着特定的“登场”和“退场”时刻&#xff0c;即作用域和生命周期。理解这些概念对于编写高效、可维护的代码至关重要。本文将带你一起探索Python中变量的…