一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

node.js|vue.js|jquery|angularjs|React|json|js教程|

服務器之家 - 編程語言 - JavaScript - js教程 - 微信小程序請求前置的方法詳解

微信小程序請求前置的方法詳解

2022-02-15 20:02ok同學 js教程

這篇文章主要給大家介紹了關于微信小程序請求前置的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

問題

因為我們有的頁面是在onload中去請求數據回來再渲染視圖,如果我們可以將請求數據這一步提前到小程序頁面跳轉前做,就可以早一點把數據請求回來,優化的效果取決于頁面跳轉所需的時間。

需求

需要一種請求前置方法充分利用跳轉的時間,預先請求接口數據,但是要盡量減少對舊項目的改造成本。因為現在我負責的小程序項目是用axios來請求接口數據,所以這里只舉例axios中post的改造的思路。我這里是通過改寫post方法,在請求的時候對需要預先請求的接口進行緩存,等第二次請求的時候返回第一次請求的promise,從而不用再發起新請求。

具體步驟

1、改造post方法

http文件

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
let instance = axios.create({ // 創建axios請求實例
 // 省略部分代碼
});
 
let { post } = instance; // 保存原本的post方法
let cache = {}; // 請求緩存
 
instance.post = function(...list) {
 
 let [url, data = {}] = list;
 
 if (cache[url]) { // 返回預請求的promise
 let pre = cache[url];
 delete cache[url];
 return pre;
 }
 
 if (data.pre) { //以pre作為是否是預請求
 delete data.pre;
 cache[url] = post(...list)
 return cache[url];
 }
 
 return post(...list); //普通的請求
}

2、使用

跳轉前的頁面,即上一個頁面

?
1
2
3
4
5
6
7
8
9
10
11
12
// 省略部分代碼 ...
 
// 這是在下個頁面要去請求接口的數據,提前在wx.navigateTo跳轉前請求,并存儲下來。
$http.post('/act/activities/lucky:search', { activityId: 12 , pre: true })
 
wx.nextTick(() => { //使用wx.nextTick是讓上面的請求先發出再跳轉
 wx.navigateTo({
 url: `${TYPE_TO_ROUTE_MAP[templateType]}?id=${activity.activityId}`
 });
})
 
// 省略部分代碼 ...

效果

未使用預加載

微信小程序請求前置的方法詳解

使用預加載

微信小程序請求前置的方法詳解

兩者紅色框的寬度差,表示的是提前了多少時間去請求接口數據,大概在100ms左右。因為下面的靜態資源地址來自于接口的數據,相當于減少了堵塞后面資源加載100ms左右。

總結

  • 這個原理就是利用小程序跳轉這部分時間提前請求數據,所以對于性能差的手機受益會大一些,雖然在開發者工具看起來能省個100ms左右,但是存在以下兩個限制
  • 頁面加載完成需要預請求的接口數據里的數據
  • 需要在上一個頁面發起預請求,并對跳轉做nextTick處理

導致這個優化的收益對整個項目來說確實有些雞肋。

到此這篇關于微信小程序請求前置的文章就介紹到這了,更多相關小程序請求前置內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://juejin.cn/post/6920109343538937864

延伸 · 閱讀

精彩推薦
  • js教程JavaScript中layim之整合右鍵菜單的示例代碼

    JavaScript中layim之整合右鍵菜單的示例代碼

    這篇文章主要介紹了JavaScript中layim之整合右鍵菜單的示例代碼,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以...

    踮腳敲代碼11522022-01-19
  • js教程JavaScript中arguments的使用方法詳解

    JavaScript中arguments的使用方法詳解

    這篇文章主要給大家介紹了關于JavaScript中arguments的使用方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的...

    等待的L先生3732021-12-15
  • js教程js仿淘寶放大鏡效果

    js仿淘寶放大鏡效果

    這篇文章主要為大家詳細介紹了js仿淘寶放大鏡效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    屈小康11212021-12-21
  • js教程JavaScript WeakMap使用詳解

    JavaScript WeakMap使用詳解

    這篇文章主要介紹了JavaScript WeakMap使用的詳細介紹,幫助大家更好的理解和使用JavaScript,感興趣的朋友可以了解下...

    MDN7082022-01-17
  • js教程微信小程序自定義膠囊樣式

    微信小程序自定義膠囊樣式

    這篇文章主要為大家詳細介紹了微信小程序自定義膠囊樣式,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    四曦11512021-12-21
  • js教程微信小程序實現點贊業務

    微信小程序實現點贊業務

    這篇文章主要為大家詳細介紹了微信小程序實現點贊業務,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    壞蛋先生7782022-01-20
  • js教程利用JS判斷元素是否為數組的方法示例

    利用JS判斷元素是否為數組的方法示例

    這篇文章主要給大家介紹了關于利用JS判斷元素是否為數組的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價...

    Fahrenheitzz10072021-12-29
  • js教程js+html+css實現手動輪播和自動輪播

    js+html+css實現手動輪播和自動輪播

    這篇文章主要為大家詳細介紹了js+html+css實現手動輪播和自動輪播效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考...

    南柯Seven9422021-12-22
主站蜘蛛池模板: 毛片a区 | 国产高清一区二区三区免费视频 | 亚洲日日做天天做日日谢 | 日本高清在线观看天码888 | 欧美色综合高清免费 | 91成| 亚洲欧美国产精品完整版 | 国产高清视频免费最新在线 | 国产主播精品在线 | 国产亚洲玖玖玖在线观看 | 欧美1级 | 99视频全部免费 | 五月婷婷丁香在线视频 | 日本视频在线播放 | 插鸡视频在线观看 | 日本手机在线视频 | 精品国产美女AV久久久久 | 亚洲精品综合一区二区 | 精品精品国产自在久久高清 | 天堂网站天堂小说 | 亚洲精品视频免费在线观看 | 亚洲第一综合天堂另类专 | 四虎影院在线免费观看视频 | 日韩欧美一区二区在线 | gayxxx视频| 999国产精品亚洲77777 | 天美网站传媒入口网址 | 亚洲成色| 国产精品亚洲专区在线播放 | 国模丰满美女冰漪34d | 天天澡夜夜澡狠狠澡 | 四川一级毛片 | 99re视频精品全部免费 | 久久久乱码精品亚洲日韩 | 亚洲国产欧美在线成人aaaa | 成人久久18网站 | 国产欧美精品 | 天天有好逼 | ass日本乱妇ass | 四虎成人免费观看在线网址 | 日本免费v片一二三区 |