这几天看了小程序的文档中关于优化的部分,小程序内其实对页面已经做了预加载优化——这也是小程序的宗旨:“更快、更轻”。
但其实即使这样,也没有办法完全挡住一个页面中n多个函数的使用(尤其是没有营养的废函数)…
合理使用小程序事件
小程序的响应式由视图层对事件进行监听,时间处理函数是通过视图层传递到逻辑层处理的。大量无用的事件绑定会大大增加视图层和逻辑层的通信,从而降低其他数据传输的响应时间,造成页面卡顿。尤其是 onPageScroll 这类频繁触发的事件,应该做好节流/防抖处理。
函数节流 :是指在一段时间内,频繁触发某个函数,而函数的执行结果不会因为触发次数而发生改变,这时候可以使用延迟执行函数的方式,防止函数过多调用而对性能造成影响。最常见的应用场景就是对页面滚动或者改变视口大小的监听,比如和
onresize
scroll
事件监听。
函数防抖 :指频繁触发的情况下,只有足够的空闲时间,才执行代码一次。比如生活中坐公交车,就是一定时间内,如果有人陆续刷卡上车,司机就不会开车;只有别人不再刷卡了,司机才会开车。
//节流
let canRun=true;
$(window).scroll(()=>{
if(!canRun){
//判断是否已空闲,如果还在执行中,则直接return
return;
}
canRun=false;
setTimeout(()=>{
canRun=true;
},300);
});
//防抖
let timer;
$(window).scroll(()=>{
if(timer){
clearTimeout(timer);
}
timer=setTimeout(()=>{
//延时200ms,处理滚动逻辑
},200);
})