成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

項目亮點:分析與解決小程序頁面切換過程卡頓的問題

開發 前端
頁面切換是指從一個頁面,切換到另外一個頁面,反復查看了自己的代碼,也沒有發現自己寫了任何非常耗時的操作,因此非常迷惑。

在微信小程序的開發過程中,發現部分頁面的切換動畫在真機調試時,非常卡頓。

頁面切換是指從一個頁面,切換到另外一個頁面。

反復查看了自己的代碼,也沒有發現自己寫了任何非常耗時的操作,因此非常迷惑。

思考了多種方案沒有效果,于是在網上找了一種說法,一篇文章說,在全局樣式中新增如下屬性,就可以解決。

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

病急亂投醫試了一下,很可惜沒有效果。后來想起來了這條屬性是用來解決 iOS 使用 overflow: scroll 滾動不流暢的問題的。

于是,在沒有頭緒的情況下,我啟用了我的找 bug 的終極大招:刪除定位法。

刪除定位法:先刪除部分代碼,再執行頁面,查看卡頓問題是否消失。如果沒有,則刪除其他部分的代碼,直到找到問題代碼為止。

該方法在我的十多年中,所向披靡,戰功顯赫。果不其然,我最終找到了問題所在。

在該頁面組件中,我寫了這樣一段代碼。

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

在微信小程序中,createRewardedVideoAd 方法是用來提前創建激勵廣告實例,以便于讀者在點擊按鈕觀看廣告時,廣告已經創建好了,而不用等待那么久。

很顯然,該方法是一個耗時操作。頁面如下:

但是這里一個很具有迷惑性的地方在于,實際上我調用該方法的時機,已經在組件創建完成之后了。

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

因此,我就有點懵了,為什么組件創建完成之后調用該方法,還是會卡頓呢?

后面從結果反推之后,我才想明白,微信小程序頁面切換到詳細邏輯應該是。

1. 創建新頁面實例
2. 執行入場動畫 「問題是入場動畫卡頓」

那么此時如果我們在頁面實例創建完成之后立馬執行一個耗時任務,就會跟入場動畫搶占主線程資源,從而導致渲染卡頓。

想明白了這個過程之后,解決的辦法就非常簡單了,我們只需要在入場動畫執行結束之后,再執行耗時任務即可。因此,我們可以使用定時器來推后耗時任務的執行。

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

再保存,重試,發現所有卡頓的頁面都流暢了!完美解決。

在客戶端開發的過程中,還有可能會遇到另外一種情況會導致頁面卡頓。不過這種情況與我這次遇到的這個卡頓的表現會有點不太一樣。這種情況的表現為:

當我點擊按鈕之后,過了很長時間切換動畫才開始執行。

通常情況下,造成這種卡頓的原因是因為頁面初始化時執行的邏輯過多,或者渲染的內容多過,導致初始化時間過長,從而造成反應緩慢。解決的辦法就是通過懶加載延后處理和渲染非首屏內容。

總結

該場景的問題與解決方案可以當做項目亮點在面試中去介紹。無論是找到問題的思路,還是解決的思路都可以展開聊很多。

對于瀏覽器的渲染機制和事件循環了解非常深刻的朋友可以快速想明白卡頓的原因所在,在面試中,基于這個場景延展出來自己對渲染原理的理解,那么你的面試過程將會非常有質量。

責任編輯:姜華 來源: 這波能反殺
相關推薦

2024-02-02 15:21:08

工具頁面性能

2022-08-02 09:15:32

系統網絡前端

2021-03-16 11:10:11

window-wsl2Windows卡頓延遲

2024-01-04 07:59:07

Painless腳本數據

2021-05-10 17:40:12

Sqlplus登錄分析

2010-06-30 14:15:08

SQL Server死

2025-04-29 08:20:00

無線監控網絡無線網絡

2015-01-13 11:17:17

2022-05-02 08:30:46

網絡Wi-Fi

2019-07-01 15:46:35

云平臺Kubernetes問題排查

2010-09-27 15:58:51

SQL存儲過程

2017-12-04 10:56:47

MySQL問題分析解決對策

2015-04-22 09:26:58

前端頁面卡頓DOM操作

2021-06-23 06:00:48

微軟Windows 10Windows

2025-02-20 12:11:07

WebWorker場景JS

2021-05-13 09:53:17

電腦卡頓硬盤文件夾

2009-06-16 14:08:10

JBoss JDBC驅

2015-10-12 10:48:16

Mac卡頓原因

2010-07-13 15:17:13

IPX協議
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 91美女视频 | 超碰97av | 亚洲一区二区三区视频免费观看 | 黄色片网此 | 拍拍无遮挡人做人爱视频免费观看 | 一二三区视频 | 九九热精品视频 | 成人亚洲在线 | 影视一区 | 精品国产一区二区三区观看不卡 | 日本电影免费完整观看 | 天天色天天射天天干 | 亚洲精品第一 | 亚洲国产欧美精品 | 超碰成人免费 | 国产色网站 | 亚洲一视频 | 亚洲精品精品 | 欧美1区| 成年人黄色一级片 | 中文字幕乱码一区二区三区 | 久久黄网 | 精品久草| 日本高清视频在线播放 | 国产永久免费 | 蜜桃免费av| 黄色大片在线视频 | 国产 日韩 欧美 在线 | 国产精品成人69xxx免费视频 | 成人夜晚看av | 草草草影院 | 中文字幕在线三区 | 成人免费淫片aa视频免费 | 精品一区二区三区四区在线 | 国产一区二区三区www | 欧美9999 | 久久久激情视频 | 欧美精品一二区 | 久久69精品久久久久久久电影好 | 夜夜艹 | 中文字幕一级 |