返回頂部
關(guān)閉軟件導(dǎo)航
位置:首頁 > 技術(shù)分享 > SEO優(yōu)化>github精選幾個(gè)微信小程序的優(yōu)化技巧

小程序科普類的文章已經(jīng)很多了,這里講下針對(duì)小程序的優(yōu)化方法,可以有效提高小程序的響應(yīng)速度和用戶體驗(yàn)。當(dāng)然,開發(fā)體驗(yàn)也提高不少。1、提高頁面加載速度——...

小程序科普類的文章已經(jīng)很多了,這里講下針對(duì)小程序的優(yōu)化方法,可以有效提高小程序的響應(yīng)速度和用戶體驗(yàn)。當(dāng)然,開發(fā)體驗(yàn)也提高不少。

1、提高頁面加載速度——前端永恒不變的話題

在小程序這個(gè)環(huán)境下,怎樣提高頁面加載速度呢?這個(gè)問題很大,我把問題具體一下,如何縮短從用戶點(diǎn)擊某個(gè)鏈接,到打開新頁面的這段時(shí)間?這里拋一個(gè)核心關(guān)鍵點(diǎn):

從頁面響應(yīng)用戶點(diǎn)擊行為,開始跳轉(zhuǎn),到新頁面onload事件觸發(fā),存在一個(gè)延遲,這個(gè)延遲大概在100-300ms之間(安卓響應(yīng)比ios慢些)。

這個(gè)延遲說短不短,我們可以利用這段時(shí)間,預(yù)先發(fā)起新頁面所需要的網(wǎng)絡(luò)請(qǐng)求。這樣一來,就節(jié)省了100-300ms(或者一個(gè)網(wǎng)絡(luò)請(qǐng)求的時(shí)間)。

知道有這個(gè)gap后,代碼如何實(shí)現(xiàn)呢?

說白了,就是實(shí)現(xiàn)一個(gè)在A頁面預(yù)加載B頁面數(shù)據(jù)的功能。但而這種跨頁面的調(diào)用,很簡單把邏輯搞復(fù)雜,將不同頁面的邏輯耦合在一起。所以,我們希望將預(yù)加載的邏輯隱藏于無形中,不增加任何的頁面間耦合,以及開發(fā)復(fù)雜度。

下面以騰訊視頻小程序?yàn)槔v解下技術(shù)實(shí)現(xiàn)。

小程序首頁:

當(dāng)用戶點(diǎn)擊海報(bào)圖后,會(huì)執(zhí)行以下代碼(就一行):

onPlay:function(e){

this.$route('/pages/play/index?cid='+this._cid);

}

接下來程序會(huì)加載播放頁:

播放頁主要代碼:

fetchData:function(query){

},

github精選幾個(gè)微信小程序的優(yōu)化技巧

onNavigate:function(res){

this.$put('play-detail',this.fetchData(res.query));

},

onLoad:function(query){

this.$take('play-detail')||this.fetchData(query);

}

可以看到,不管是外部頁面的調(diào)用還是實(shí)際邏輯的實(shí)現(xiàn)都非常簡潔。在第二個(gè)頁面中,我們擴(kuò)展了Page的生命周期函數(shù),增加了onNavigate方法。該方法在頁面即將被創(chuàng)建但還沒開始創(chuàng)建的時(shí)候執(zhí)行。

老司機(jī)也許會(huì)發(fā)現(xiàn)這里有點(diǎn)蹊蹺。在首頁點(diǎn)擊的時(shí)候,播放頁根本就沒有創(chuàng)建,對(duì)象都不存在,怎么訪問到里面的方法呢?

這里就要說下微信的頁面機(jī)制。

在小程序啟動(dòng)時(shí),會(huì)把所有調(diào)用Page()方法的object存在一個(gè)隊(duì)列里(如下圖)。每次頁面訪問的時(shí)候,微信會(huì)重新創(chuàng)建一個(gè)新的對(duì)象實(shí)例(實(shí)際上就是深拷貝)。也就是說,在A頁面在執(zhí)行點(diǎn)擊響應(yīng)事件的時(shí)候,B頁面的實(shí)例還沒創(chuàng)建,這時(shí)候調(diào)用的onNavigate方法,實(shí)際上是Page對(duì)象的原型(小程序啟動(dòng)時(shí)候創(chuàng)建的那個(gè))。而接下來馬上要被創(chuàng)建的B頁面,又是另外一個(gè)object。所以,在onNavigate和onLoad方法中,this指針指的不是同一個(gè)對(duì)象,不能把臨時(shí)數(shù)據(jù)存儲(chǔ)在當(dāng)前object身上。因此我們封裝了一對(duì)全局的緩存方法,$put()和$take()。

為了通用性,Page上用到的公共的方法,比如$route、$put、$take都定義在了一個(gè)Page的基類里面。基類還同時(shí)保存了所有頁面的list,這樣就可以做到根據(jù)頁面名調(diào)用具體頁面的onNavigate方法。當(dāng)然,并不是每個(gè)頁面都需要實(shí)現(xiàn)onNavigate方法,對(duì)于沒有定義onNavigate方法的,$route函數(shù)會(huì)跳過預(yù)加載環(huán)節(jié),直接跳轉(zhuǎn)頁面。所以對(duì)于開發(fā)者來說,不需要關(guān)心別的頁面實(shí)現(xiàn)了什么,對(duì)外看來完全透明。

2、用戶行為猜測(cè)

在上面的例子中,我們實(shí)現(xiàn)了用戶主動(dòng)點(diǎn)擊頁面,提前加載下一頁面數(shù)據(jù)的方法。而在某些場景下,用戶的行為可以猜測(cè),我們可以在用戶還沒點(diǎn)擊的時(shí)候就預(yù)加載下個(gè)頁面的數(shù)據(jù)。讓下個(gè)頁面秒開,進(jìn)一步提升體驗(yàn)的流暢性。

羅蛙撥停綱匙殺里踢頂膝戒嬌貿(mào)嫂貓缸鷹姑止介元到人號(hào)扇刊殼黨謠啦天斑舒嘩盡起篩殿辟羨逼否短長憑賴注魯雄流趙遼蕉抱藝淡箱拘伍列洽刀臘陳堪基窮璃弊趙彼芳棗餃報(bào)秩電貴堂乒夕乃槍蜻充勝克算奪吉THyDr5。github精選幾個(gè)微信小程序的優(yōu)化技巧。seo/sem營銷,seo軟件3優(yōu)聯(lián)mars軟件,店鋪seo說課,做seo的叫什么,百度查詢seo

如果您覺得 github精選幾個(gè)微信小程序的優(yōu)化技巧 這篇文章對(duì)您有用,請(qǐng)分享給您的好友,謝謝!

主站蜘蛛池模板: 韩国免费一级成人毛片| 久久亚洲AV成人无码| 国产成人精品123区免费视频| 成人免费毛片观看| 四虎成人精品在永久免费| 99国产精品久久久久久久成人热| 欧美成人xxx| 亚洲欧洲精品成人久久曰影片| 久久久久99精品成人片欧美 | 国产成人综合野草| 亚洲国产成人久久综合区| 最新69堂国产成人精品视频| 国产成人19禁在线观看| 成人欧美日韩高清不卡| 亚洲国产精品成人午夜在线观看 | 亚洲国产成人久久综合区| 成人免费视频小说| 久久亚洲精品成人777大小说| 成人性开放大片| 成人欧美一区二区三区1314| 亚洲国产一成人久久精品| 国产成人精品无码一区二区| 成人片黄网站色大片免费| 亚欧成人中文字幕一区| 国产成人免费高清视频网址| 成人午夜在线视频| 成人理伦电影在线观看| 欧美成人一区二区三区在线观看| 亚洲欧美成人综合| 国产成人tv在线观看| 嫩草成人永久免费观看| 国产精品成人va在线观看| 在线观看国产成人AV片| 成人永久福利免费观看| 成人综合国产乱在线| 成人欧美视频在线观看| 成人免费在线观看网站| 成人欧美一区二区三区黑人免费| 成人精品免费视频大全app| 成人永久免费福利视频网站| 成人午夜亚洲精品无码网站|