はじめに
Next.js
で画像の表示方法について詰まった箇所があったので、整理して記事にしました。
この記事は個人的なアウトプットを目的として作成したものです。そのため、誤った情報や不足している内容が含まれている可能性があります。もし間違いや気になる点がございましたら、ぜひご指摘いただけますと幸いです。
Next.jsでの画像の表示の仕方
imgタグを使う場合
まず、public
フォルダに画像を配置する場合、img
タグでは以下のようにパスを指定します。
blog-app
└── public
└── img
└── xxxx.png
この場合、画像を表示するには以下のように/img/xxxx.png
と記述します。
export default function Page() {
return <img src="/img/xxxx.png" alt="img" />;
}
public
フォルダはURLのルート(/
)として扱われるため、public
を含める必要はありません。
export default function Page() {
return <img src="./public/img/xxxx.png" alt="img" />;
}
このように指定するとpublic
をディレクトリとして解釈しようとするため、画像が表示されません。
next/imageを使う場合
next/image
を使用する場合も、img
タグと同様にpublic
フォルダ内のパスを指定できます。
import Image from 'next/image'
export default function Page() {
return <Image src="/img/xxxx.png" alt="img" width="64" height="64" />;
}
next/image
はパフォーマンスを向上させるため、基本的にはこちらの使用が推奨されています。
終わりに
Next.js
の画像管理はpublic
フォルダの扱い方がポイントになることがわかりました。またpublic
ディレクトリを使わず、app
ディレクトリ内に画像を配置する方法もあるのでそちらについても今後学習していきたいと思います。
参考