*/ ?>

Vue で したいときの解決法(Vite 版)


Warning: Attempt to read property "ID" on null in /home/c2485919/public_html/mirumi.in/wp-content/themes/cocoon-child-master/endpoints.php on line 37

これまでの Vue では、img タグ内の src 属性に動的な値として「プロジェクトソース内のアセットを指定したインポート」を使うことができませんでした。

これの回避策として require() を使うなどがありましたが、これも現在の環境では動かない、もしくはエディタやリンターなどに厳しく怒られるようになったりしていて、どうするのが一番いいのかわりと謎な状態が続いていました(少なくとも僕の中では…)。

最近 Vue オンリーのプロジェクトでも Vite を使うようにしたのですが、そのとき Vite のリファレンスを眺めていたら「Importing Asset as URL」という機能を見つけ、これを使ったら簡単に解決できたので紹介します(前とはタイトルや説明内容が変わっていたけど同じものを指しているようです)。

つまるところ、こうすればいいだけです。

<template>
  <div class="image">
    <img :src="mikan">
  </div>
</template>

<script setup lang="ts">
import mikan from "@/assets/images/mikan.png"
</script>

本番ビルドではちゃんとファイルハッシュのサフィックスが付くものに自動で置き換わります。

ちなみに、この記事を書くにあたって最新の Vite のリファレンスの該当部分を読んでみたところ、Webpack にも似たような機能はあったらしいです(file-loader)。だったら前もこれでできたのか…?

とにかく、今後画像はもちろん一般的な静的アセットのローディングで困ることはなさそうです。

0
0
234
0

Warning: Attempt to read property "like_count" on null in /home/c2485919/public_html/mirumi.in/wp-content/themes/cocoon-child-master/endpoints.php on line 820
0
みるみ
Follow Me!
みるみみるめも筆者

ブロガー、エンジニア。

詳しいプロフィールはこのページで色々書いてます。もやってます。

みるめも
1
コメントが正常に送信されました。承認されるまで表示されませんので二重投稿なさらないようご注意ください。