Nuxtで画像ファイル名に変数を入れたい場合

地味に、変数を画像ファイル名に入れて、かつsrcsetを使いたい時悩んだので、備忘録も兼ねてメモ

画像を呼び出す時

<template lang="pug">
img(src="~assets/images/hogehoge.jpg" srcset="~assets/images/hogehoge@2x.jpg 2x")
</template>

アセット - Nuxt.js にあるように、

  • ~/assets とせずに、~assets とする。
  • 文字列として渡す

そうするとコンパイル時に、require('~assets/images/hogehoge.jpg') に変換してくれる。

変数をファイル名に入れて、画像を呼び出す時

img(:src="require('~/assets/images/hogehoge' + variable + '.jpg')" srcset="require('~/assets/images/hogehoge' + variable + '.jpg') + ' 2x")

一方、変数をファイル名に使いたい場合は、

  • ~assets とせずに、~/assets とする。
  • Javascriptとして渡し、かつrequireで囲んであげる

これでOKなはず。