LoginSignup
3
5

More than 3 years have passed since last update.

【Vue.js】画像の遅延読み込みを実現する為にvue-lazyloadを導入してみた

Last updated at Posted at 2020-10-12

実務でフロントのパフォーマンス改善を仰せつかり、
試行錯誤する中で、学習の一環で個人アプリにvue-lazyloadと言うライブラリを導入してみた。

他にもいくつかvueでLazyLoad出来るライブラリがあるので、後日そっちも試してみたい。

Lazy Load

Lazy Loadとは、画像やiframeなどコンテンツがブラウザの表示領域内に存在するものだけをロードし、領域外のコンテンツはロードしないことで、画面表示を高速化する仕組みのことです。

環境

vue.js 2.6.12
vue-lazyload 1.3.3

実装

まずはライブラリをインストールします。

$ npm install vue-lazyload -D

CDNでもOKです。

<script src=”https://unpkg.com/vue-lazyload/vue-lazyload.js"></script>

エントリーポイントでインポートして必要に応じてオプションを設定しておきます。

app.js
import VueLazyload from 'vue-lazyload'

Vue.use(VueLazyload, {
  preLoad: // 事前ロードする高さの割合指定
  error: //エラー時に表示する画像指定する
  loading: // ロード中に表示する画像指定する
  attempt: // ロード失敗した時のリトライの上限指定
  listenEvents: // 遅延読み込みを起動するためのイベント
  adapter: // 要素の属性を動的に切り替えたい時に使用
  filter: // 画像を動的に切り替えたい時に使用
  throttleWait: // 遅延の待機時間
})

Lazy Loadさせたいimg要素にv-lazyディレクティブ的なもので画像パスを指定するだけと簡単です。

card.vue
<li v-for="item in items" :key="item">
  <img class="card-main-img" v-lazy="item.imageUrl">
</li>

実装イメージ。
分かりづらいですが、ロード中の画像にNoImageを設定しています。

jWsEyGD1vOdE0wKNuZKH1602506098-1602506114.gif

3
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
5