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のエントリーポイントファイルをカスタマイズできるようになりました。
参考リンク
記事をシェア
フォローして最新情報を入手
Googleの優先ソースに追加すると、このサイトの記事をGoogleで見つけやすくなります。また、ぜひXやRSSフィードもフォローしてください。
次の記事
-1.png&w=1080&q=75)
生まれた時から、母国語よりも先にJavaScriptを使っていました。ネットの海のどこにもいなくてどこにでもいます。
Webフロントエンドプログラマーとして、TypeScriptを用いたWebアプリやブラウザー拡張機能を制作。Xのシャドウバン検知ツール「Shadowban Scanner」やリンクカード復活ツール「Restore Link Card」を公開し、国内外のメディアで紹介されました。iGEM 2023ではJapan-UnitedチームのWikiを制作してGrand Prizeの獲得に貢献。ブログではXやSNSの最新ニュース、不具合の検証と対処法、フロントエンド開発の知見を発信しています。







![[新しいXチャットへようこそ]というテキストが画面に大きく表示されており、その下には次の3つの説明が表示されている。[エンドツーエンドの暗号化:メッセージは、端末にかかわらずエンドツーエンドで暗号化されています。][最先端のプライバシー:Xを含め、他の人がメッセージを読むことはできません。][パスコードを設定:メッセージを保護するため、4桁のパスコードを設定してください。]これらの説明の下には、[パスコードを作成]という大きなボタンが配置されている](/_next/image/?url=%2Fapi%2Fmedia%2Ffile%2Fwelcome-to-new-chat.png&w=1920&q=75)



![Discordの[プロフィールのプライバシー]設定のスクリーンショット](/_next/image/?url=%2Fapi%2Fmedia%2Ffile%2Fdiscord-profile-privacy-settings.png&w=3840&q=75)