時(shí)間:10-22
欄目:SEO優(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){
},

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)的流暢性。
猜您喜歡
武漢網(wǎng)站設(shè)計(jì)靠譜樂云seo貴陽萬詞霸屏價(jià)格樂云seoseo專員無經(jīng)驗(yàn)天津seo外鏈推廣萬詞霸屏公司丶樂云seoseo營銷方法亻金手指排名24SEM和SEO的教程陳文平seo小旋風(fēng)seo入侵seo搜索引擎優(yōu)化期末報(bào)告seo兩大類型上海新站整站seoseo編輯工具無錫seo速成班seo文章原創(chuàng)度檢測(cè)SEO要注意美觀嗎濟(jì)南seo搜索優(yōu)化天長seo優(yōu)化公司哪家專業(yè)seo 刷網(wǎng)站urlseo主要方法綿陽seo服務(wù)咸陽seo推廣Seo-475seo培訓(xùn)課程視頻千圖網(wǎng)seo泉州seo優(yōu)化推廣seo手機(jī)關(guān)鍵字排名網(wǎng)址免費(fèi)學(xué)習(xí)seo重慶seo優(yōu)化公司seo網(wǎng)站推廣軟件包頭seo培訓(xùn)寧波seo培訓(xùn)seo 月薪羅蛙撥停綱匙殺里踢頂膝戒嬌貿(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)分享給您的好友,謝謝!
- 1SEO優(yōu)化的重要決定因素UX
- 24399神曲網(wǎng)頁游戲官網(wǎng)seo方案-網(wǎng)頁游戲神曲
- 3碟民網(wǎng)新手小白seo應(yīng)把握哪些技能迅速提升自己
- 4網(wǎng)站SEO推廣的26個(gè)SEO技術(shù)方法
- 5為什么網(wǎng)站優(yōu)化排名需要高配服務(wù)器與空間的支持
- 6網(wǎng)站優(yōu)化與網(wǎng)頁加載速度的重要關(guān)系
- 7網(wǎng)站優(yōu)化關(guān)鍵詞排名不穩(wěn)定是什么問題
- 8為什么90%的企業(yè)都把網(wǎng)站SEO放在第一位呢
- 9衛(wèi)浴排名2020衛(wèi)浴十大名牌排名
- 10網(wǎng)站優(yōu)化很高境界怎么樣提高用戶體驗(yàn)