VUE--Lazyload(二十四)

一、Lazyload簡介

vue-lazyload是通過指令的方式實(shí)現(xiàn)的,定義的指令是v-lazy指令,指令被bind時會創(chuàng)建一個listener魁巩,并將其添加到listener queue里面, 并且搜索target dom節(jié)點(diǎn)姐浮,為其注冊dom事件(如scroll事件)谷遂,dom事件回調(diào)中,會遍歷listener queue里的listener卖鲤,判斷此listener綁定的dom是否處于頁面中perload的位置肾扰,如果處于則加載異步加載當(dāng)前圖片的資源,同時listener會在當(dāng)前圖片加載的過程的loading蛋逾,loaded集晚,error三種狀態(tài)觸發(fā)當(dāng)前dom渲染的函數(shù),分別渲染三種狀態(tài)下dom的內(nèi)容区匣。


lazyload流程圖

https://www.npmjs.com/package/vue-lazyload

二偷拔、Vue Lazyload插件

  1. 安裝
npm install vue-lazyload --save-dev
  1. main.js引入插件
import VueLazyLoad from 'vue-lazyload'
Vue.use(VueLazyLoad,{
    error:'./static/error.png',
    loading:'./static/loading.png'
})
  1. vue文件中將需要懶加載的圖片綁定 v-bind:src 修改為 v-lazy
<img class="item-pic" v-lazy="newItem.picUrl"/>

三、功能擴(kuò)展

參數(shù)選項說明:

描述 默認(rèn) 選項
preLoad proportion of pre-loading height(預(yù)加載高度比例) 1.3 Number
error src of the image upon load fail(圖片路徑錯誤時加載圖片) 'data-src' String
loading src of the image while loading(預(yù)加載圖片) 'data-src' String
attempt attempts count(嘗試加載圖片數(shù)量) 3 Number
listenEvents events that you want vue listen forM
(想要監(jiān)聽的vue事件)
默認(rèn)['scroll']可以省略亏钩,
當(dāng)插件跟頁面中的動畫或過渡等事件有沖突是莲绰,
可以嘗試其他選項
['scroll'(默認(rèn)),'wheel',
'mousewheel','resize',
'animationend','transitionend','touchmove']
Desired Listen Events
adapter dynamically modify the attribute of element(動態(tài)修改元素屬性) { } Element Adapter
filter the image's listener filter(動態(tài)修改圖片地址路徑) { } Image listener filter
lazyComponent 組件懶加載 false Lazy Component
dispatchEvent 觸發(fā)元素狀態(tài)監(jiān)聽事件(error, loaded, rendered) false Boolean
throttleWait throttle wait 200 Number
observer use IntersectionObserver false Boolean
observerOptions IntersectionObserver options { rootMargin: '0px', threshold: 0.1 } IntersectionObserver

四、示例

import Vue from 'vue'
import App from './App.vue'
import VueLazyload from 'vue-lazyload'  //引入這個懶加載插件

Vue.use(VueLazyload)

// 或者添加VueLazyload 選項
Vue.use(VueLazyload, {
  preLoad: 1.3,
  error: 'dist/error.png',
  loading: 'dist/loading.gif',
  attempt: 1
})

new Vue({
  el: 'body',
  components: {
    App
  }
})

在入口文件添加后铸屉,在組件任何地方都可以直接使用把 img 里的:src -> v-lazy:

 <div class="pic">
    <a href="#"><img :src="'/static/img/' + item.productImage" alt=""></a>
</div>

把之前項目中img 標(biāo)簽里面的 :src 屬性 改成 v-lazy 
 <div class="pic">
    <a href="#"><img v-lazy="'/static/img/' + item.productImage" alt=""></a>
</div>

可以通過傳遞數(shù)組來配置想要使用vue - lazyload的事件:

Vue.use(VueLazyload, {
  preLoad: 1.3,
  error: 'dist/error.png',
  loading: 'dist/loading.gif',
  attempt: 1,
  // the default is ['scroll', 'wheel', 'mousewheel', 'resize', 'animationend', 'transitionend']
  listenEvents: [ 'scroll' ]
})
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末钉蒲,一起剝皮案震驚了整個濱河市切端,隨后出現(xiàn)的幾起案子彻坛,更是在濱河造成了極大的恐慌,老刑警劉巖踏枣,帶你破解...
    沈念sama閱讀 218,451評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件昌屉,死亡現(xiàn)場離奇詭異,居然都是意外死亡茵瀑,警方通過查閱死者的電腦和手機(jī)间驮,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,172評論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來马昨,“玉大人竞帽,你說我怎么就攤上這事扛施。” “怎么了屹篓?”我有些...
    開封第一講書人閱讀 164,782評論 0 354
  • 文/不壞的土叔 我叫張陵疙渣,是天一觀的道長。 經(jīng)常有香客問我堆巧,道長妄荔,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,709評論 1 294
  • 正文 為了忘掉前任谍肤,我火速辦了婚禮啦租,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘荒揣。我一直安慰自己篷角,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,733評論 6 392
  • 文/花漫 我一把揭開白布乳附。 她就那樣靜靜地躺著内地,像睡著了一般。 火紅的嫁衣襯著肌膚如雪赋除。 梳的紋絲不亂的頭發(fā)上阱缓,一...
    開封第一講書人閱讀 51,578評論 1 305
  • 那天,我揣著相機(jī)與錄音举农,去河邊找鬼荆针。 笑死,一個胖子當(dāng)著我的面吹牛颁糟,可吹牛的內(nèi)容都是我干的航背。 我是一名探鬼主播,決...
    沈念sama閱讀 40,320評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼棱貌,長吁一口氣:“原來是場噩夢啊……” “哼玖媚!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起婚脱,我...
    開封第一講書人閱讀 39,241評論 0 276
  • 序言:老撾萬榮一對情侶失蹤今魔,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后障贸,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體错森,經(jīng)...
    沈念sama閱讀 45,686評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,878評論 3 336
  • 正文 我和宋清朗相戀三年篮洁,在試婚紗的時候發(fā)現(xiàn)自己被綠了涩维。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,992評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡袁波,死狀恐怖瓦阐,靈堂內(nèi)的尸體忽然破棺而出蜗侈,到底是詐尸還是另有隱情,我是刑警寧澤睡蟋,帶...
    沈念sama閱讀 35,715評論 5 346
  • 正文 年R本政府宣布宛篇,位于F島的核電站,受9級特大地震影響薄湿,放射性物質(zhì)發(fā)生泄漏其馏。R本人自食惡果不足惜樟氢,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,336評論 3 330
  • 文/蒙蒙 一蚊惯、第九天 我趴在偏房一處隱蔽的房頂上張望说订。 院中可真熱鬧,春花似錦坐求、人聲如沸蚕泽。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,912評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽须妻。三九已至,卻和暖如春泛领,著一層夾襖步出監(jiān)牢的瞬間荒吏,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,040評論 1 270
  • 我被黑心中介騙來泰國打工渊鞋, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留绰更,地道東北人。 一個月前我還...
    沈念sama閱讀 48,173評論 3 370
  • 正文 我出身青樓锡宋,卻偏偏與公主長得像儡湾,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子执俩,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,947評論 2 355

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

  • 原理簡述 vue-lazyload是通過指令的方式實(shí)現(xiàn)的徐钠,定義的指令是v-lazy指令指令被bind時會創(chuàng)建一個l...
    AmazRan閱讀 5,608評論 0 1
  • Vue 實(shí)例 屬性和方法 每個 Vue 實(shí)例都會代理其 data 對象里所有的屬性:var data = { a:...
    云之外閱讀 2,210評論 0 6
  • 基于Vue的一些資料 內(nèi)容 UI組件 開發(fā)框架 實(shí)用庫 服務(wù)端 輔助工具 應(yīng)用實(shí)例 Demo示例 element★...
    嘗了又嘗閱讀 1,151評論 0 1
  • Vue官方文檔以下內(nèi)容作為本人日常學(xué)習(xí)使用,不作為參考 一役首、Vue環(huán)境搭建以及vue-cli的使用 Vue多頁面應(yīng)...
    好一只帥鹵蛋閱讀 746評論 0 1
  • 1概述 上一章我們說了Vue是用于構(gòu)建用戶界面的框架尝丐,它最終呈現(xiàn)給用戶的是一個一個HTML標(biāo)簽。Vue可以使用HT...
    書上得來終覺淺閱讀 510評論 1 0