当前位置:首页 > 科技  > 软件

项目亮点:分析与解决小程序页面切换过程卡顿的问题

来源: 责编: 时间:2024-06-05 17:46:34 83观看
导读在微信小程序的开发过程中,发现部分页面的切换动画在真机调试时,非常卡顿。页面切换是指从一个页面,切换到另外一个页面。反复查看了自己的代码,也没有发现自己写了任何非常耗时的操作,因此非常迷惑。思考了多种方案没有效

eMy28资讯网——每日最新资讯28at.com

在微信小程序的开发过程中,发现部分页面的切换动画在真机调试时,非常卡顿。eMy28资讯网——每日最新资讯28at.com

页面切换是指从一个页面,切换到另外一个页面。eMy28资讯网——每日最新资讯28at.com

反复查看了自己的代码,也没有发现自己写了任何非常耗时的操作,因此非常迷惑。eMy28资讯网——每日最新资讯28at.com

思考了多种方案没有效果,于是在网上找了一种说法,一篇文章说,在全局样式中新增如下属性,就可以解决。eMy28资讯网——每日最新资讯28at.com

page {  -webkit-overflow-scrolling: touch;}

病急乱投医试了一下,很可惜没有效果。后来想起来了这条属性是用来解决 iOS 使用 overflow: scroll 滚动不流畅的问题的。eMy28资讯网——每日最新资讯28at.com

于是,在没有头绪的情况下,我启用了我的找 bug 的终极大招:删除定位法。eMy28资讯网——每日最新资讯28at.com

删除定位法:先删除部分代码,再执行页面,查看卡顿问题是否消失。如果没有,则删除其他部分的代码,直到找到问题代码为止。eMy28资讯网——每日最新资讯28at.com

该方法在我的十多年中,所向披靡,战功显赫。果不其然,我最终找到了问题所在。eMy28资讯网——每日最新资讯28at.com

在该页面组件中,我写了这样一段代码。eMy28资讯网——每日最新资讯28at.com

useEffect(() => {  ad.current = Taro.createRewardedVideoAd({    adUnitId: ads.ad15  })  ...}, [])

在微信小程序中,createRewardedVideoAd 方法是用来提前创建激励广告实例,以便于读者在点击按钮观看广告时,广告已经创建好了,而不用等待那么久。eMy28资讯网——每日最新资讯28at.com

很显然,该方法是一个耗时操作。页面如下:eMy28资讯网——每日最新资讯28at.com

eMy28资讯网——每日最新资讯28at.com

但是这里一个很具有迷惑性的地方在于,实际上我调用该方法的时机,已经在组件创建完成之后了。eMy28资讯网——每日最新资讯28at.com

useEffect(() => {  // 组件创建完成之后}, [])

因此,我就有点懵了,为什么组件创建完成之后调用该方法,还是会卡顿呢?eMy28资讯网——每日最新资讯28at.com

后面从结果反推之后,我才想明白,微信小程序页面切换到详细逻辑应该是。eMy28资讯网——每日最新资讯28at.com

1. 创建新页面实例2. 执行入场动画 「问题是入场动画卡顿」

那么此时如果我们在页面实例创建完成之后立马执行一个耗时任务,就会跟入场动画抢占主线程资源,从而导致渲染卡顿。eMy28资讯网——每日最新资讯28at.com

想明白了这个过程之后,解决的办法就非常简单了,我们只需要在入场动画执行结束之后,再执行耗时任务即可。因此,我们可以使用定时器来推后耗时任务的执行。eMy28资讯网——每日最新资讯28at.com

useEffect(() => {  setTimeout(() => {    ad.current = Taro.createRewardedVideoAd({      adUnitId: ads.ad15    })  }, 200)  ...}, [])

再保存,重试,发现所有卡顿的页面都流畅了!完美解决。eMy28资讯网——每日最新资讯28at.com

在客户端开发的过程中,还有可能会遇到另外一种情况会导致页面卡顿。不过这种情况与我这次遇到的这个卡顿的表现会有点不太一样。这种情况的表现为:eMy28资讯网——每日最新资讯28at.com

当我点击按钮之后,过了很长时间切换动画才开始执行。eMy28资讯网——每日最新资讯28at.com

通常情况下,造成这种卡顿的原因是因为页面初始化时执行的逻辑过多,或者渲染的内容多过,导致初始化时间过长,从而造成反应缓慢。解决的办法就是通过懒加载延后处理和渲染非首屏内容。eMy28资讯网——每日最新资讯28at.com

总结

该场景的问题与解决方案可以当做项目亮点在面试中去介绍。无论是找到问题的思路,还是解决的思路都可以展开聊很多。eMy28资讯网——每日最新资讯28at.com

对于浏览器的渲染机制和事件循环了解非常深刻的朋友可以快速想明白卡顿的原因所在,在面试中,基于这个场景延展出来自己对渲染原理的理解,那么你的面试过程将会非常有质量。eMy28资讯网——每日最新资讯28at.com

本文链接://www.dmpip.com//www.dmpip.com/showinfo-26-92176-0.html项目亮点:分析与解决小程序页面切换过程卡顿的问题

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 现在停止滥用useMemo吧!

下一篇: 拼多多面试:Netty如何解决粘包问题?

标签:
  • 热门焦点
  • 鸿蒙OS 4.0公测机型公布:甚至连nova6都支持

    鸿蒙OS 4.0公测机型公布:甚至连nova6都支持

    华为全新的HarmonyOS 4.0操作系统将于今天下午正式登场,官方在发布会之前也已经正式给出了可升级的机型产品,这意味着这些机型会率先支持升级享用。这次的HarmonyOS 4.0支持
  • Rust中的高吞吐量流处理

    Rust中的高吞吐量流处理

    作者 | Noz编译 | 王瑞平本篇文章主要介绍了Rust中流处理的概念、方法和优化。作者不仅介绍了流处理的基本概念以及Rust中常用的流处理库,还使用这些库实现了一个流处理程序
  • 小红书1周涨粉49W+,我总结了小白可以用的N条涨粉笔记

    小红书1周涨粉49W+,我总结了小白可以用的N条涨粉笔记

    作者:黄河懂运营一条性教育视频,被54万人“珍藏”是什么体验?最近,情感博主@公主是用鲜花做的,火了!仅仅凭借一条视频,光小红书就有超过128万人,为她疯狂点赞!更疯狂的是,这
  • 10天营收超1亿美元,《星铁》比《原神》差在哪?

    10天营收超1亿美元,《星铁》比《原神》差在哪?

    来源:伯虎财经作者:陈平安即便你没玩过《原神》,你一定听说过的它的大名。恨它的人把《原神》开服那天称作是中国游戏史上最黑暗的一天,有粉丝因为索尼在PS平台上线《原神》,怒而
  • 新电商三兄弟,“抖快红”成团!

    新电商三兄弟,“抖快红”成团!

    来源:价值研究所作 者:Hernanderz 随着内容电商的概念兴起,抖音、快手、小红书组成的“新电商三兄弟”成为业内一股不可忽视的势力,给阿里、京东、拼多多带去了巨大压
  • 花7万退货退款无门:谁在纵容淘宝珠宝商家造假?

    花7万退货退款无门:谁在纵容淘宝珠宝商家造假?

    来源:极点商业作者:杨铭在淘宝购买珠宝玉石后,因为保证金不够赔付,店铺关闭,退货退款难、维权无门的比比皆是。“提供相关产品鉴定证书,支持全国复检,可以30天无理由退换货。&
  • 冯提莫签约抖音公会 前“斗鱼一姐”消失在直播间

    冯提莫签约抖音公会 前“斗鱼一姐”消失在直播间

    来源:直播观察提起“冯提莫”这个名字,很多网友或许听过,但应该不记得她是哪位主播了。其实,作为曾经的“斗鱼一姐”,冯提莫在游戏直播的年代影响力不输于现
  • iQOO 11S评测:行业唯一的200W标准版旗舰

    iQOO 11S评测:行业唯一的200W标准版旗舰

    【Techweb评测】去年底,iQOO推出了“电竞旗舰”iQOO 11系列,作为一款性能强机,该机不仅全球首发2K 144Hz E6全感屏,搭载了第二代骁龙8平台及144Hz电竞
  • 世界人工智能大会国际日开幕式活动在世博展览馆开启

    世界人工智能大会国际日开幕式活动在世博展览馆开启

    30日上午,世界人工智能大会国际日开幕式活动在世博展览馆开启,聚集国际城市代表、重量级院士专家、国际创新企业代表,共同打造人工智能交流平台。上海市副市
Top
Baidu
map