小程序模板網(wǎng)

小程序之上拉加載照片以及圖片加載延遲解決之道

發(fā)布時(shí)間:2017-11-04 15:11 所屬欄目:小程序開發(fā)BUG

說在前面

最近由于項(xiàng)目需要所以學(xué)了下小程序,也做了一些東西,隨后便有了以下的一些總結(jié)了,現(xiàn)在說說在小程序中如何進(jìn)行上拉加載照片和進(jìn)行懶加載。


問題描述

無論是app還是小程序,加載圖片多的時(shí)候都會(huì)出現(xiàn)圖片加載緩慢和流量耗費(fèi)多的問題。而我在小程序中的解決方案是上拉加載和進(jìn)行“變相懶加載”。


老規(guī)矩,以源碼為導(dǎo)向講解上拉加載


photos.wxml

    <scroll-view class="scroll" style="height:{{clientHeight}}px;" scroll-y="true" bindscrolltolower="loadMore" >
        //放置圖片的代碼
    </scroll-view>

源碼解讀:這里只需要關(guān)注bindscrolltolower函數(shù)即可,它意思是上拉的時(shí)候觸發(fā)的函數(shù),而這里觸發(fā)的函數(shù)是loadMore。

photos.js

loadMore: function(e){
this.showLoading('正在加載圖片中');
var that = this;
currentPage++;
wx.request({
        url: baseUrl  +'pictureController/getPicturesByAid',
        data: {
            pictureAid: albumId,
            pageSize: pageSize,
            currentPage : currentPage
        },
        header: {
            'content-type': 'application/json'
        },
        success: function(res) {
            console.log(res);
            if(res.data.result.length!=0)
            {
                array = array.concat(res.data.result)
                that.setData({
                    array : array
                })
            }
            else
            {
                that.showToast('已加載完全部圖片!');
            }
        },
        complete: function(res){
            that.hideLoading();
        }
    })
}

源碼解讀:js函數(shù)中的一些參數(shù)和函數(shù)我都去掉了,留下這個(gè)loadMore函數(shù),這個(gè)函數(shù)的作用是用pageSize和currentPage做分頁參數(shù)傳遞到后臺(tái)加載新的數(shù)據(jù),然后將得到的數(shù)據(jù)res.data.result利用concat函數(shù)連接在array之后,array函數(shù)的作用是存放之前已經(jīng)加載過來的數(shù)據(jù),連接新數(shù)據(jù)結(jié)束后再用一次setData即可!


現(xiàn)在看看我是如何巧用變相懶加載的


做過項(xiàng)目的都知道,圖片的懶加載其實(shí)就是在圖片還沒有加載成功的時(shí)候出現(xiàn)一張默認(rèn)的圖片,這樣可以不至于圖片還沒有加載成功的時(shí)候出現(xiàn)一大推空白的地方,我也是因?yàn)樽鲰?xiàng)目出現(xiàn)這種情況之后才開始研究如何避開這種情況,大家可以看一下的源碼:

<scroll-view class="scroll" style="height:{{clientHeight}}px;" scroll-y="true" bindscrolltolower="loadMore" >
<view class="function" style="background-image:url({{cryUrl}})" wx:for="{{array}}" wx:for-item="item">
    <image src="{{imageBaseUrl+item.pictureAid+'/'+item.pictureName}}" style="height:95%;width:95%;margin:3px auto;" bindtap="selectPhotos" id="{{imageBaseUrl+item.pictureAid+'/'+item.pictureName}}&{{item.pictureUploadtime}}"/>
</view> 
</scroll-view>

源碼解讀:這個(gè)就是從服務(wù)器獲取圖片數(shù)據(jù)成功之后循環(huán)排列圖片的源碼,重點(diǎn)在于style="background-image:url({{cryUrl}})" 里邊是在圖片還沒有加載成功之前顯示的一個(gè)div的背景圖片,而就是這個(gè)背景圖片避開了圖標(biāo)沒加載成功之前空白的尷尬。


Note:發(fā)布的這些文章全都是自己邊學(xué)邊總結(jié)的,難免有紕漏,如果發(fā)現(xiàn)有不足的地方,希望可以指出來,一起學(xué)習(xí)咯,么么噠。

 


易優(yōu)小程序(企業(yè)版)+靈活api+前后代碼開源 碼云倉庫:starfork
本文地址:http://www.u-renovate.com/wxmini/doc/bug/17638.html 復(fù)制鏈接 如需定制請聯(lián)系易優(yōu)客服咨詢:800182392 點(diǎn)擊咨詢
QQ在線咨詢
AI智能客服 ×