在微信小程序里實現(xiàn)圖片預加載組件

該文章源于https://jdc.jd.com/archives/3820

將功能抽離成公用組件

實現(xiàn)這么一個功能享潜,在頁面上載入一張尺寸和 K 數(shù)都很大的圖片朋譬,由于圖片很大腿堤,下載需要一定的時間砂代,而在這段時間內(nèi)到忽,用戶看到的是空白或是不完整的圖片吴菠,體驗顯然不好者填。

一種常用的優(yōu)化手段是先加載一張縮略圖,該縮略圖通過樣式設(shè)置為和原圖一樣的寬高做葵,這樣用戶首先能很快速地看到一張模糊的圖片占哟,此時再去對原圖做預加載,加載完成之后對縮略圖進行替換酿矢,因為此時圖片已經(jīng)下載過了榨乎,所以界面上能無縫地切換為原圖顯示,效果如下:
https://storage.360buyimg.com/mtd/home/single-img-load1483686270312.gif

如何實現(xiàn)

新建 demo 頁面及組件相關(guān)的文件 img-loader.js 和 img-loader.wxml瘫筐,組件需要和頁面一樣有個模板文件蜜暑,是因為小程序里無法動態(tài)地插入模板結(jié)構(gòu)。然后在 demo.wxml 里通過 import 語句引用組件模板策肝,在 demo.js 里通過 require 語句將組件腳本進行引入
在頁面中通過 template 調(diào)用組件模板并傳入數(shù)據(jù)肛捍,這里我們傳遞一個名為 imgLoadList 的圖片數(shù)組過去
在頁面腳本中的 onLoad 方法中對組件進行初始化隐绵,并將 this 對象傳入,因為組件內(nèi)必須通過 Page 對象的 setData 來更新模板里的內(nèi)容
在組件的 img-loader.js 中定義一個 load 方法用來創(chuàng)建一個圖片的加載拙毫,將傳入的 src 添加到加載隊列中氢橙,并使用 setData 方法更新隊列數(shù)據(jù)
接下來在組件 img-loader.wxml 中通過接收到的圖片隊列數(shù)據(jù),用 wx:for 指令去生成 image 組件來對圖片進行加載恬偷,同時將成功及失敗的回調(diào)綁定到 img-loader.js 中的方法中悍手,最終再回調(diào)回 Page 對象中


image.png

可以看出,由于小程序里無法動態(tài)地插入模板結(jié)構(gòu)袍患,所以相對于普通網(wǎng)頁端的組件調(diào)用坦康,這里多出了在 WXML 文件中引入及使用模板這個步驟,而其他部分對于調(diào)用方(即Demo 頁面)來說則是相似的诡延,下面是完整的 Demo 頁面的代碼
如果把圖片加載完成的回調(diào)統(tǒng)一指定成 Page 對象中的方法滞欠,則可以很方便地處理多張圖片的加載,這里也寫了個例子肆良,效果如下:
https://storage.360buyimg.com/mtd/home/multi-img-load1483686388552.gif

總的來說調(diào)用起來還算方便吧筛璧,img-loader 的組件代碼略多這里就不貼出來啦,有興趣的同學可以前往 Github 項目頁面 查看惹恃,目前此組件已應(yīng)用在京東購物小程序版中夭谤。Have Fun~

轉(zhuǎn)載自:https://jdc.jd.com/archives/3820

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市巫糙,隨后出現(xiàn)的幾起案子朗儒,更是在濱河造成了極大的恐慌,老刑警劉巖参淹,帶你破解...
    沈念sama閱讀 212,542評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件醉锄,死亡現(xiàn)場離奇詭異,居然都是意外死亡浙值,警方通過查閱死者的電腦和手機恳不,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,596評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來开呐,“玉大人烟勋,你說我怎么就攤上這事「何茫” “怎么了神妹?”我有些...
    開封第一講書人閱讀 158,021評論 0 348
  • 文/不壞的土叔 我叫張陵颓哮,是天一觀的道長家妆。 經(jīng)常有香客問我,道長冕茅,這世上最難降的妖魔是什么伤极? 我笑而不...
    開封第一講書人閱讀 56,682評論 1 284
  • 正文 為了忘掉前任蛹找,我火速辦了婚禮,結(jié)果婚禮上哨坪,老公的妹妹穿的比我還像新娘庸疾。我一直安慰自己,他們只是感情好当编,可當我...
    茶點故事閱讀 65,792評論 6 386
  • 文/花漫 我一把揭開白布届慈。 她就那樣靜靜地躺著,像睡著了一般忿偷。 火紅的嫁衣襯著肌膚如雪金顿。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,985評論 1 291
  • 那天鲤桥,我揣著相機與錄音揍拆,去河邊找鬼。 笑死茶凳,一個胖子當著我的面吹牛嫂拴,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播贮喧,決...
    沈念sama閱讀 39,107評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼筒狠,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了箱沦?” 一聲冷哼從身側(cè)響起窟蓝,我...
    開封第一講書人閱讀 37,845評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎饱普,沒想到半個月后运挫,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,299評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡套耕,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,612評論 2 327
  • 正文 我和宋清朗相戀三年谁帕,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片冯袍。...
    茶點故事閱讀 38,747評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡匈挖,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出康愤,到底是詐尸還是另有隱情儡循,我是刑警寧澤,帶...
    沈念sama閱讀 34,441評論 4 333
  • 正文 年R本政府宣布征冷,位于F島的核電站择膝,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏检激。R本人自食惡果不足惜肴捉,卻給世界環(huán)境...
    茶點故事閱讀 40,072評論 3 317
  • 文/蒙蒙 一腹侣、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧齿穗,春花似錦傲隶、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,828評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至脖卖,卻和暖如春帖鸦,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背胚嘲。 一陣腳步聲響...
    開封第一講書人閱讀 32,069評論 1 267
  • 我被黑心中介騙來泰國打工作儿, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人馋劈。 一個月前我還...
    沈念sama閱讀 46,545評論 2 362
  • 正文 我出身青樓攻锰,卻偏偏與公主長得像,于是被迫代替她去往敵國和親妓雾。 傳聞我的和親對象是個殘疾皇子娶吞,可洞房花燭夜當晚...
    茶點故事閱讀 43,658評論 2 350

推薦閱讀更多精彩內(nèi)容