Astro v5.10リリース コンテンツを動的に取得できるライブコンテンツコレクションが追加

コンテンツコレクションを動的に取得できるライブコンテンツコレクションや、レスポンシブ画像の対応などが含まれるAstro 5.10がリリースされました。
ライブコンテンツコレクションの実験的なサポート
Astro v5.10で実験的に追加されたライブコンテンツコレクションでは、ビルド時ではなく実行時にコンテンツをフェッチし、動的でリアルタイムなコンテンツを提供できるようになります。
Astroのこれまでのコンテンツコレクションはビルド時に構築されていたため、動的なコンテンツを扱いたい場合はコンテンツコレクションを利用できませんでした。
ビルド時に構築される従来のコンテンツコレクションは、頻繁に更新されないコンテンツや、短時間でビルドできる軽量なサイトに適しています。
一方で、頻繁にコンテンツが更新される場合や、ユーザーごとにコンテンツをパーソナライズしたい場合にはライブコンテンツコレクションが便利です。
ライブコンテンツコレクションは、実行時にデータを取得する新しいローダーを使用します。
既存のローダーはビルド時に実行されますが、ライブローダーはユーザーがページにアクセスした際に実行されます。
ビルド時に実行されるローダーの方がページの読み込み時のパフォーマンスは優れていますが、動的なコンテンツを扱いたい場合はライブローダーを利用できます。
(実は当サイトは最近、コンテンツの更新に時間がかかることを理由にAstroからNext.jsに移行したのですが、もう少し早くライブコンテンツコレクションがリリースされていれば…)
Astroでライブコンテンツコレクションを利用するには、設定を編集し、コンテンツコレクションを定義します。
export default defineConfig({ experimental: { liveContentCollections: true, },});
import { defineLiveCollection } from 'astro:content';import { storeLoader } from './loaders/store';
export const products = defineLiveCollection({ type: 'live', loader: storeLoader({ apiKey: process.env.STORE_API_KEY, endpoint: 'https://api.mystore.com/v1', }),});
ライブコンテンツコレクションのデータを取得するには、getLiveCollection()
とgetLiveEntry()
を使用します。
詳細な実装方法は、 Astroのドキュメント を参照してください。
レスポンシブ画像が安定版に
Astroの<Image>
コンポーネントのlayout
プロパティを使用すると、生成される<img>
要素にsrcset
とsizes
が設定されます。
レスポンシブ画像の設定は、Astroの設定でグローバルに適用するか、画像ごとに適用できます。
グローバルに適用するには、astro.config.mjs
でimage.layout
を指定します。
export default defineConfig({ image: { responsiveStyles: true, layout: 'constrained', },});
layout
プロパティには、constrained
、fixed
、full-width
のいずれかを指定できます。
<Image>
コンポーネントのlayout
プロパティを指定すると、グローバルな設定を上書きできます。
<Image src="/hero.jpg" alt="A panoramic view of the mountains" layout="full-width"/>
また、LCP(Largest Contentful Paint)要素に使用するためのpriority
プロパティも追加されており、このプロパティを指定するとloading="eager"
、decoding="sync"
、fetchpriority="high"
が自動で設定されます。
<Image src="/hero.jpg" alt="Hero image" priority />
画像のトリミング方法とは一方法を制御できる、fit
プロパティとposition
プロパティも追加されました。
<Image src="/profile.jpg" alt="Profile photo" fit="cover" position="center top" width={300} height={300}/>
レスポンシブ画像機能を実験的な段階から利用していた場合は、experimental.responsiveImages
を削除し、image.responsiveStyles
をtrue
に設定します。
export default defineConfig({ experimental: { responsiveImages: true, }, image: { responsiveStyles: true, },});
そのほかの機能
静的ページでCSPを設定できるようになったほか、Cloudflare Workersのエントリーポイントファイルをカスタマイズできるようになりました。
参考リンク
おすすめアイテム
※このリンクを経由して商品を購入すると、当サイトの運営者が報酬を得ることがあります。詳細はこちら。
このサイトを支援する
Buy Me a CoffeeまたはGitHub Sponsorsで支援していただけると、サイトの運営やコンテンツ制作の励みになります。定期的な支援と一度限りの支援がありますので、お間違いのないようにお願いします。
-1.png&w=256&q=75)
生まれた時から、母国語よりも先にJavaScriptを使っていました。ネットの海のどこにもいなくてどこにでもいます。
Webフロントエンドプログラマーで、テクノロジーに関する話題を追いかけています。動画編集やプログラミングが趣味で、たまにデザインなどもやっています。主にTypeScriptを使用したWebフロントエンド開発を専門とし、便利で実用的なブラウザー拡張機能を作成しています。また、個人ブログを通じて、IT関連のニュースやハウツー、技術的なプログラミング情報を発信しています。