よっしー
こんにちは。よっしーです(^^)
今日は、SvelteKitでの画像の扱いについて解説しています。
背景
SvelteKitでの画像の扱いについて調査する機会がありましたので、その時の内容を備忘として記事に残しました。
@sveltejs/enhanced-img
動的な画像の選択
画像アセットを手動でインポートして<enhanced:img>
に渡すこともできます。これは、静的な画像のコレクションがあり、その中から動的に1つを選択したり、それらを反復処理したりする場合に便利です。この場合、処理したい画像を指定するために、以下のようにimport
文と<img>
要素の両方を更新する必要があります。
<script>
import MyImage from './path/to/your/image.jpg?enhanced';
</script>
<enhanced:img src={MyImage} alt="代替テキスト" />
Viteのimport.meta.glob
を使用することもできます。カスタムクエリを通じてenhanced
を指定する必要があることに注意してください:
<script>
const imageModules = import.meta.glob(
'/path/to/assets/*.{avif,gif,heif,jpeg,jpg,png,tiff,webp,svg}',
{
eager: true,
query: {
enhanced: true
}
}
)
</script>
{#each Object.entries(imageModules) as [_path, module]}
<enhanced:img src={module.default} alt="代替テキスト" />
{/each}
解説
- 動的インポートの基本パターン:
- 個別の画像インポート:
?enhanced
クエリパラメータの追加- インポートした画像を変数として使用
<enhanced:img>
のsrc属性に変数を指定
import.meta.glob
を使用した一括処理:
- 対象となるファイル形式:
- avif, gif, heif, jpeg, jpg, png, tiff, webp, svg
- 設定オプション:
eager: true
:即時読み込みquery: { enhanced: true }
:画像最適化の有効化
- 実装パターン:
- 単一画像の動的選択:
- 個別インポートを使用
- 条件に応じた画像の切り替え
- 複数画像の一括処理:
import.meta.glob
を使用- Svelteの
each
ブロックでの反復処理
- 使用上の注意点:
- クエリパラメータ
enhanced
の必須指定 - 適切なファイルパスとパターンの指定
- 画像フォーマットの指定
この機能により、動的な画像処理とコレクションの管理が効率的に行えます。特に多数の画像を扱うプロジェクトでの開発効率が向上します。
おわりに
今日は、 SvelteKitでの画像の扱いについて解説しました。
よっしー
何か質問や相談があれば、コメントをお願いします。また、エンジニア案件の相談にも随時対応していますので、お気軽にお問い合わせください。
それでは、また明日お会いしましょう(^^)
コメント