当前位置: 首页 > news >正文

网站开发者工具post大连事件最新消息

网站开发者工具post,大连事件最新消息,wordpress切换div组件,海南高端建设网站给大家推荐一个实用面试题库 1、前端面试题库 #xff08;面试必备#xff09; 推荐#xff1a;★★★★★ 地址#xff1a;web前端面试题库 前言 为什么要做性能优化#xff1f;性能优化到底有多重要#xff1f; 性能优化是为了提供更好的用户体验、加…给大家推荐一个实用面试题库 1、前端面试题库 面试必备            推荐★★★★★ 地址web前端面试题库 前言 为什么要做性能优化性能优化到底有多重要   性能优化是为了提供更好的用户体验、加快网站加载速度、提高搜索引擎排名、节省服务器资源、适应多种设备和网络环境等方面的需求。通过不断优化性能可以提高用户满意度、增加网站流量提高业务效果。 同时性能优化是把双刃剑有好的一面也有坏的一面。好的一面就是可以能提升网站性能坏的一面就是配置多代码复杂或者要遵守的规则太多。并且某些性能优化规则并不适用所有场景所以也并不是一味的追求性能优化而是需要谨慎使用。 防抖和节流是JavaScript 中常用的两种性能优化方式。面试中我们也会经常碰到。它们的作用是减少函数的执行次数以提高代码的性能。 在进行窗口的resize、scroll、输出框内容校验等操纵的时候如果事件处理函数调用的频率无限制会加重浏览器的负担导致用户体验非常之差。那么为了前端性能的优化也为了用户更好的体验就可以采用防抖debounce和节流throttle的方式来到达这种效果减少调用的频率。 防抖Debounce 1. 情景 有些场景事件触发的频率过高mousemove、onkeydown、onkeyup、onscroll例如文本编辑器实时保存当无任何更改操作一秒后进行保存调整浏览器窗口大小时resize 次数过于频繁造成计算过多此时需要一次到位就用到了防抖。 回调函数执行的频率过高也会有卡顿现象。 可以一段时间过后进行触发去除无用操作 2. 防抖原理 一定在事件触发 n 秒后才执行如果在一个事件触发的 n 秒内又触发了这个事件以新的事件的时间为准n 秒后才执行等触发事件 n 秒内不再触发事件才执行。 官方解释当持续触发事件时一定时间段内没有再触发事件事件处理函数才会执行一次如果设定的时间到来之前又一次触发了事件就重新开始延时。ps:个人理解这就相当于游戏中的回城键只有读秒到规定时间点才会触发回城期间任意时间打断都会重新计时。 3. 防抖函数简单实现 //简单的防抖函数function debounce(func, wait, immediate) {//定时器变量var timeout;return function () {//每次触发scrolle先清除定时器clearTimeout(timeout);//指定多少秒后触发事件操作handlertimeout setTimeout(func, wait);};};//绑定在scrolle事件上的handlerfunction handlerFunc() {console.log(Success);}//没采用防抖动window.addEventListener(scroll, handlerFunc);//采用防抖动window.addEventListener(scrolle, debounce(handlerFunc, 1000));4. 防抖函数演化过程 1this event绑定问题 //以闭包的形式返回一个函数内部解决了this指向的问题event对象传递的问题function debounce(func, wait) {var timeout;return function () {var context this;var args arguments;clearTimeout(timeout)timeout setTimeout(function () {func.apply(context, args)}, wait);};};(2) 立即触发问题 //首次触发执行再次触发以后开始执行防抖函数//使用的时候不用重复执行这个函数本身返回的函数才具有防抖功能 function debounce(func, wait, immediate) {var timeout;return function () {var context this;var args arguments;if(timeout) clearTimeout(timeout);// 是否在某一批事件中首次执行if (immediate) {var callNow !timeout;timeout setTimeout(function() {timeout null;func.apply(context, args)immediate true;}, wait);if (callNow) {func.apply(context, args)}immediate false;} else {timeout setTimeout(function() {func.apply(context, args);immediate true;}, wait);}} }3返回值问题 function debounce(func, wait, immediate) {var timeout, result;return function () {var context this, args arguments;if (timeout) clearTimeout(timeout);if (immediate) {var callNow !timeout;timeout setTimeout(function() {result func.apply(context, args)}, wait);if (callNow) result func.apply(context, args);} else {timeout setTimeout(function() {result func.apply(context, args)}, wait);}return result;} }4取消防抖添加cancel方法 function debounce(func, wait, immediate) {var timeout, result;function debounced () {var context this, args arguments;if (timeout) clearTimeout(timeout);if (immediate) {var callNow !timeout;timeout setTimeout(function() {result func.apply(context, args)}, wait);if (callNow) result func.apply(context, args);} else {timeout setTimeout(function() {result func.apply(context, args)}, wait);}return result;}debounced.cancel function(){cleatTimeout(timeout);timeout null;}return debounced; }节流Throttle 1.情景 图片懒加载ajax数据请求加载 2.节流原理 如果持续触发事件每隔一段时间只执行一次函数控制了事件发生的频率。 官方解释当持续触发事件时保证一定时间段内只调用一次事件处理函数。s:个人理解这就相当于游戏中的射击就算你高频点击子弹只会在固定时间段内射出。 3.节流实现-时间戳和定时器 时间戳 var throttle function (func, delay) {var prev Date.now()return function () {var context this;var args arguments;var now Date.now();if (now - prev delay) {func.apply(context, args);prev Date.now();}}}function handle() {console.log(Math.random());}window.addEventListener(scroll, throttle(handle, 1000));定时器 var throttle function (func, delay) {var timer null;return function () {var context this;var args arguments;if (!timer) {timer setTimeout(function () {func.apply(context, args);timer null;}, delay);}}}function handle() {console.log(Math.random());}window.addEventListener(scroll, throttle(handle, 1000))4.节流函数的演化过程 时间戳触发 //在开始触发时会立即执行一次 如果最后一次没有超过 wait 值则不触发 function throttle(func, wait) {var context, args;var previous 0; // 初始的时间点也是关键的时间点return function() {var now new Date();context this;args arguments;if (now - previous wait) {func.apply(context, args);previous now;}} }定时器触发 //首次不会立即执行最后一次会执行和用时间戳的写法互补。 function throttle(func, wait){var context, args, timeout;return function() {context this;args arguments;if(!timeout) {timeout setTimeout(function(){func.apply(context, args);timeout null;}, wait);}} }结合时间戳和定时器 function throttle(func, wait) {var timer null;var startTime Date.now(); return function(){var curTime Date.now();var remaining wait-(curTime-startTime); var context this;var args arguments;clearTimeout(timer);if(remaining0){ func.apply(context, args);startTime Date.now();}else{timer setTimeout(fun, remaining); // 如果小于wait 保证在差值时间后执行}} }总结 防抖原理是维护一个定时器将很多个相同的操作合并成一个。规定在delay后触发函数如果在此之前触发函数则取消之前的计时重新计时只有最后一次操作能被触发。 节流原理是判断是否达到一定的时间来触发事件。某个时间段内只能触发一次函数。 区别防抖只会在最后一次事件后执行触发函数节流不管事件多么的频繁都会保证在规定时间段内触发事件函数。 给大家推荐一个实用面试题库 1、前端面试题库 面试必备            推荐★★★★★ 地址web前端面试题库
http://www.pierceye.com/news/154929/

相关文章:

  • 门户网站建设主要内容深圳网站有哪些
  • 最好看的免费网站源码龙泉驿最新消息
  • 百度建立网站需要花多少钱学校门户网站建设工作
  • 网站安全防护方案沈阳网站建设策划方案
  • php做网站需要啥技术网站每年空间域名费用及维护费
  • 商城网站建设报个人免费网站
  • 公司网站开发建设wordpress首页加图片
  • 个人网站怎么写建设工程网站广州
  • 东阿网站制作如何在国外网站做推广
  • 宣城公司做网站潍坊市住房和城乡建设局网站
  • 用自己服务器做网站用备案wordpress弹窗订阅
  • 配色相关网站省住房城乡建设厅网站
  • 做汽车配件出口用什么网站好些求百度关键词搜索网站
  • 做网站到八方资源网怎么样公司网站首页如何做
  • 东莞政务网站建设方案wordpress三栏博客主题
  • 艺友网站建设网站需要的栏目
  • 教育类网站 前置审批重庆网站建设首选卓光
  • 宁波做网站哪家好个人做论坛网站怎么做
  • 公司网站建设北京电子设计工程期刊
  • 网站前端建设都需要什么c 网站开发案例详解
  • 无锡网站无忧网站建设
  • 最火高端网站设计厂家宁波新亚建设内部网站
  • 娱乐网站建设宁波网站建设多少钱一年
  • app制作器手机版下载网站关键词优化排名怎么做
  • 网站站外优化推广方式网站建设网站需要什么软件有哪些
  • 重庆建设厂招聘信息网站做坑网站需要
  • 光谷 网站建设公司海珠区住房和水务建设局网站
  • 公司做网站还是做appwordpress多文件传递变量
  • 网站教学苏州优化网站
  • 扁平化网站下载网站设计公司深圳