Aller au contenu

Contexte de rendu d'Astro

Lors du rendu d’une page, Astro fournit une API d’exĂ©cution spĂ©cifique au rendu actuel. Cela inclut des informations utiles telles que l’URL de la page actuelle ainsi que des API permettant d’effectuer des actions telles que la redirection vers une autre page.

Dans les composants .astro, ce contexte est disponible Ă  partir de l’objet global Astro. Les fonctions de point de terminaison sont Ă©galement appelĂ©es avec ce mĂȘme objet de contexte comme premier argument, dont les propriĂ©tĂ©s reflĂštent les propriĂ©tĂ©s globales d’Astro.

Certaines propriétés ne sont disponibles que pour les routes rendues à la demande ou peuvent avoir des fonctionnalités limitées sur les pages pré-rendues.

L’objet global Astro est disponible pour tous les fichiers .astro. Utilisez l’objet context dans les fonctions de point de terminaison pour servir les points de terminaison de serveur statique ou en direct et dans le middleware pour injecter un comportement lorsqu’une page ou un point de terminaison est sur le point d’ĂȘtre rendu.

Les propriĂ©tĂ©s suivantes sont disponibles dans l’objet global Astro (par exemple Astro.props, Astro.redirect()) et sont Ă©galement disponibles dans l’objet de contexte (par exemple context.props, context.redirect()) passĂ© aux fonctions de point de terminaison et au middleware.

props est un objet contenant toutes les valeurs qui ont Ă©tĂ© transmises en tant qu’attributs de composant.

src/components/Heading.astro
---
const { title, date } = Astro.props;
---
<div>
<h1>{title}</h1>
<p>{date}</p>
</div>
src/pages/index.astro
---
import Heading from '../components/Heading.astro';
---
<Heading title="Mon tout premier article" date="09 Août 2022" />
En savoir plus sur la façon dont les mises en page Markdown et MDX gÚrent les propriétés.

L’objet props contient Ă©galement toutes les props transmises depuis getStaticPaths() lors du rendu des routes statiques.

src/pages/posts/[id].astro
---
export function getStaticPaths() {
return [
{ params: { id: '1' }, props: { author: 'Blu' } },
{ params: { id: '2' }, props: { author: 'Erika' } },
{ params: { id: '3' }, props: { author: 'Matthew' } }
];
}
const { id } = Astro.params;
const { author } = Astro.props;
---

Voir aussi : Transmission de données avec props

params est un objet contenant les valeurs des segments de route dynamiques correspondant Ă  une requĂȘte. Ses propriĂ©tĂ©s doivent correspondre aux paramĂštres du chemin d’accĂšs Ă  la page ou au fichier de point de terminaison.

Dans les versions statiques, il s’agira des params renvoyĂ©s par getStaticPaths() utilisĂ©s pour le prĂ©-rendu des routes dynamiques.

src/pages/posts/[id].astro
---
export function getStaticPaths() {
return [
{ params: { id: '1' } },
{ params: { id: '2' } },
{ params: { id: '3' } }
];
}
const { id } = Astro.params;
---
<h1>{id}</h1>

Lorsque les routes sont rendues Ă  la demande, params peut ĂȘtre n’importe quelle valeur correspondant aux segments de chemin dans le modĂšle de route dynamique.

src/pages/posts/[id].astro
---
import { getPost } from '../api';
const post = await getPost(Astro.params.id);
// Aucun article trouvé avec cet identifiant
if (!post) {
return Astro.redirect("/404")
}
---
<html>
<h1>{post.name}</h1>
</html>

Voir aussi : params

Type : URL

Ajouté à la version : astro@1.0.0

url est un objet URL construit Ă  partir de la valeur actuelle de request.url. Il est utile pour interagir avec les propriĂ©tĂ©s individuelles de l’URL de la requĂȘte, comme le chemin d’accĂšs et l’origine.

Astro.url équivaut à faire new URL(Astro.request.url).

url sera une URL localhost en mode dev. Lors de la crĂ©ation d’un site, les routes prĂ©-rendues recevront une URL basĂ©e sur les options site et base. Si site n’est pas configurĂ©, les pages prĂ©-rendues recevront Ă©galement une URL localhost pendant la compilation.

src/pages/index.astro
<h1>L'URL actuelle est : {Astro.url}</h1>
<h1>Le chemin d'accĂšs actuel de l'URL est : {Astro.url.pathname}</h1>
<h1>L'origine de l'URL actuelle est : {Astro.url.origin}</h1>

Vous pouvez également utiliser url pour créer de nouvelles URL en la passant comme argument à new URL().

src/pages/index.astro
---
// Exemple : créer une URL canonique à l'aide de votre domaine de production
const canonicalURL = new URL(Astro.url.pathname, Astro.site);
// Exemple : créez une URL pour les balises méta SEO en utilisant votre domaine actuel
const socialImageURL = new URL('/images/preview.png', Astro.url);
---
<link rel="canonical" href={canonicalURL} />
<meta property="og:image" content={socialImageURL} />

Type : URL | undefined

site renvoie une URL créée Ă  partir du site dĂ©fini dans votre configuration Astro. Il renvoie undefined si vous n’avez pas dĂ©fini de valeur pour site dans votre configuration Astro.

src/pages/index.astro
<link
rel="alternate"
type="application/rss+xml"
title="Le titre de votre site"
href={new URL("rss.xml", Astro.site)}
/>

Type : string

Ajouté à la version : astro@1.0.0

clientAddress spĂ©cifie l’adresse IP de la requĂȘte. Cette propriĂ©tĂ© est uniquement disponible pour les routes rendues Ă  la demande et ne peut pas ĂȘtre utilisĂ©e sur les pages prĂ©-rendues.

src/pages/ip-address.astro
---
export const prerender = false; // Pas nécessaire en mode `server`
---
<div>Votre adresse IP est : <span class="address">{Astro.clientAddress}</span></div>

Type : boolean

Ajouté à la version : astro@5.0.0

Un booléen indiquant si la page actuelle est pré-rendue ou non.

Vous pouvez utiliser cette propriĂ©tĂ© pour exĂ©cuter une logique conditionnelle dans un middleware, par exemple, pour Ă©viter d’accĂ©der aux en-tĂȘtes dans les pages prĂ©-rendues.

Type : string

Ajouté à la version : astro@1.0.0

generator fournit la version actuelle d’Astro que votre projet exĂ©cute. C’est un moyen pratique d’ajouter une balise <meta name="generator"> avec votre version actuelle d’Astro. Il suit le format "Astro v5.x.x".

src/pages/site-info.astro
<html>
<head>
<meta name="generator" content={Astro.generator} />
</head>
<body>
<footer>
<p>Construit avec <a href="https://astro.build">{Astro.generator}</a></p>
</footer>
</body>
</html>

Type : Request

Astro.request est un objet Request standard. Il peut ĂȘtre utilisĂ© pour obtenir les propriĂ©tĂ©s url, headers, method, et mĂȘme le corps de la requĂȘte.

src/pages/index.astro
<p>RĂ©ception d'une requĂȘte {Astro.request.method} Ă  "{Astro.request.url}".</p>
<p>En-tĂȘtes de requĂȘte reçus :</p>
<p><code>{JSON.stringify(Object.fromEntries(Astro.request.headers))}</code></p>

Type : ResponseInit & { readonly headers: Headers }

response est un objet ResponseInit standard. Il a la structure suivante.

  • status : Le code de statut numĂ©rique de la rĂ©ponse, par exemple 200.
  • statusText : Le message de statut associĂ© au code de statut, par exemple 'OK'.
  • headers : Une instance Headers que vous pouvez utiliser pour dĂ©finir les en-tĂȘtes HTTP de la rĂ©ponse.

Astro.response est utilisĂ© pour dĂ©finir le status, le statusText et les headers de la rĂ©ponse d’une page.

---
if(condition) {
Astro.response.status = 404;
Astro.response.statusText = 'Non trouvé';
}
---

Ou de dĂ©finir un en-tĂȘte :

---
Astro.response.headers.set('Set-Cookie', 'a=b; Path=/;');
---

Type : (path: string, status?: number) => Response

Ajouté à la version : astro@1.5.0

redirect() renvoie un objet Response qui vous permet de rediriger vers une autre page et Ă©ventuellement de fournir un code d’état de rĂ©ponse HTTP comme deuxiĂšme paramĂštre.

Une page (et non un composant enfant) doit renvoyer le résultat de Astro.redirect() pour que la redirection se produise.

Pour les routes gĂ©nĂ©rĂ©es de maniĂšre statique, cela produira une redirection client Ă  l’aide d’une balise <meta http-equiv="refresh"> et ne prend pas en charge les codes d’état.

Pour les routes rendues Ă  la demande, la dĂ©finition d’un code d’état personnalisĂ© est prise en charge lors de la redirection. S’il n’est pas spĂ©cifiĂ©, les redirections seront servies avec un code d’état 302.

L’exemple suivant redirige un utilisateur vers une page de connexion :

src/pages/account.astro
---
import { isLoggedIn } from '../utils';
const cookie = Astro.request.headers.get('cookie');
// Si l'utilisateur n'est pas connecté, redirigez-le vers la page de connexion
if (!isLoggedIn(cookie)) {
return Astro.redirect('/login');
}
---
<p>Informations de l'utilisateur</p>

Type : (rewritePayload: string | URL | Request) => Promise<Response>

Ajouté à la version : astro@4.13.0

rewrite() vous permet de diffuser du contenu Ă  partir d’une URL ou d’un chemin diffĂ©rent sans rediriger le navigateur vers une nouvelle page.

La mĂ©thode accepte soit une chaĂźne de caractĂšres, une URL ou un objet Request pour l’emplacement du chemin.

Utilisez une chaßne de caractÚres pour fournir un chemin explicite :

src/pages/index.astro
---
return Astro.rewrite("/login")
---

Utilisez un type URL lorsque vous devez construire le chemin de l’URL pour la réécriture. L’exemple suivant affiche le chemin parent d’une page en crĂ©ant une nouvelle URL Ă  partir du chemin relatif "../" :

src/pages/blog/index.astro
---
return Astro.rewrite(new URL("../", Astro.url))
---

Utilisez un type Request pour un contrĂŽle complet de la requĂȘte (Request) envoyĂ©e au serveur pour le nouveau chemin. L’exemple suivant envoie une requĂȘte pour afficher la page parent tout en fournissant des en-tĂȘtes :

src/pages/blog/index.astro
---
return Astro.rewrite(new Request(new URL("../", Astro.url), {
headers: {
"x-custom-header": JSON.stringify(Astro.locals.someValue)
}
}))
---

Type : string

Ajouté à la version : astro@5.0.0

originPathname dĂ©finit le chemin d’accĂšs d’origine de la requĂȘte, avant que les réécritures ne soient appliquĂ©es.

src/pages/404.astro
<p>Le chemin d'origine est {Astro.originPathname}</p>
<p>Le chemin réécrit est {Astro.url.pathname}</p>

Ajouté à la version : astro@2.4.0

locals est un objet utilisĂ© pour stocker et accĂ©der Ă  des informations arbitraires pendant le cycle de vie d’une requĂȘte. Astro.locals est un objet contenant toutes les valeurs de l’objet context.locals dĂ©fini par le middleware. Utilisez-le pour accĂ©der aux donnĂ©es renvoyĂ©es par le middleware dans vos fichiers .astro.

Les fonctions middleware peuvent à la fois lire et écrire les valeurs de context.locals :

src/middleware.ts
import type { MiddlewareHandler } from 'astro';
export const onRequest: MiddlewareHandler = ({ locals }, next) => {
if (!locals.title) {
locals.title = "Titre par défaut";
}
return next();
}

Les composants Astro et les points de terminaison de l’API peuvent lire les valeurs depuis locals lorsqu’elles s’affichent :

src/pages/Orders.astro
---
const title = Astro.locals.title;
---
<h1>{title}</h1>

Type : string | undefined

Ajouté à la version : astro@3.5.0

preferredLocale est une valeur calculée pour trouver la meilleure correspondance entre les préférences linguistiques du navigateur de votre visiteur et les paramÚtres régionaux pris en charge par votre site.

Elle est calculĂ©e en vĂ©rifiant les paramĂštres rĂ©gionaux configurĂ©s dans votre tableau i18n.locales et les paramĂštres rĂ©gionaux pris en charge par le navigateur de l’utilisateur via l’en-tĂȘte Accept-Language. Cette valeur est undefined si aucune correspondance de ce type n’existe.

Cette propriĂ©tĂ© est uniquement disponible pour les routes rendues Ă  la demande et ne peut pas ĂȘtre utilisĂ©e sur des pages statiques prĂ©-rendues.

Type : string[] | undefined

Ajouté à la version : astro@3.5.0

preferredLocaleList représente le tableau de tous les paramÚtres régionaux demandés par le navigateur et pris en charge par votre site web. Cela génÚre une liste de toutes les langues compatibles entre votre site et votre visiteur.

Si aucune des langues demandĂ©es par le navigateur n’est trouvĂ©e dans votre tableau locales, alors la valeur est []. Cela se produit lorsque vous ne prenez en charge aucun des paramĂštres rĂ©gionaux prĂ©fĂ©rĂ©s de vos visiteurs.

Si le navigateur ne spécifie aucune langue préférée, alors cette valeur sera celle de i18n.locales : tous vos paramÚtres régionaux pris en charge seront considérés comme également préférés par un visiteur sans préférences.

Cette propriĂ©tĂ© n’est disponible que pour l’affichage cĂŽtĂ© serveur (SSR) et ne doit pas ĂȘtre utilisĂ©e pour les sites statiques.

Type : string | undefined

Ajouté à la version : astro@3.5.6

Les paramĂštres rĂ©gionaux calculĂ©s Ă  partir de l’URL actuelle, en utilisant la syntaxe spĂ©cifiĂ©e dans votre configuration locales. Si l’URL ne contient pas de prĂ©fixe /[locale]/, la valeur par dĂ©faut sera i18n.defaultLocale.

Type : (action: TAction) => ActionReturnType<TAction> | undefined

Ajouté à la version : astro@4.15.0

getActionResult() est une fonction qui renvoie le rĂ©sultat d’une soumission d’Action. Celle-ci accepte une fonction d’action comme argument (par exemple, actions.logout) et renvoie un objet data ou error lorsqu’une soumission est reçue. Sinon, elle renverra undefined.

src/pages/index.astro
---
import { actions } from 'astro:actions';
const result = Astro.getActionResult(actions.logout);
---
<form action={actions.logout}>
<button type="submit">Se déconnecter</button>
</form>
{result?.error && <p>Échec de la dĂ©connexion. Veuillez rĂ©essayer.</p>}

Ajouté à la version : astro@4.15.0

callAction() est une fonction utilisĂ©e pour appeler un gestionnaire d’Action directement depuis votre composant Astro. Celle-ci accepte une fonction Action comme premier argument (par exemple actions.logout) et toute entrĂ©e que l’action reçoit comme deuxiĂšme argument. Elle renvoie le rĂ©sultat de l’action sous forme de promesse.

src/pages/index.astro
---
import { actions } from 'astro:actions';
const { data, error } = await Astro.callAction(actions.logout, { userId: '123' });
---

Type : string

Ajouté à la version : astro@5.0.0

Le modĂšle de route chargĂ© de gĂ©nĂ©rer la page ou la route actuelle. Dans le routage basĂ© sur des fichiers, cela ressemble au chemin d’accĂšs au fichier de votre projet utilisĂ© pour crĂ©er la route. Lorsque les intĂ©grations crĂ©ent des routes pour votre projet, context.routePattern est identique Ă  la valeur de injectRoute.pattern.

La valeur commencera par une barre oblique et ressemblera au chemin d’un composant de page par rapport à votre dossier src/pages/ sans extension de fichier.

Par exemple, le fichier src/pages/en/blog/[slug].astro renverra /en/blog/[slug] pour routePattern. Chaque page de votre site gĂ©nĂ©rĂ©e par ce fichier (par exemple /en/blog/post-1/, /en/blog/post-2/, etc.) partage la mĂȘme valeur pour routePattern. Dans le cas des routes index.*, le modĂšle de route n’inclura pas le mot « index ». Par exemple, src/pages/index.astro renverra /.

Vous pouvez utiliser cette propriĂ©tĂ© pour comprendre quelle route effectue le rendu de votre composant. Cela vous permet de cibler ou d’analyser ensemble les URL de pages gĂ©nĂ©rĂ©es de maniĂšre similaire. Par exemple, vous pouvez l’utiliser pour restituer certaines informations de maniĂšre conditionnelle ou collecter des mesures sur les routes les plus lentes.

Type : AstroCookies

Ajouté à la version : astro@1.4.0

cookies contient des utilitaires pour lire et manipuler les cookies pour les routes rendues Ă  la demande.

Type : (key: string, options?: AstroCookieGetOptions) => AstroCookie | undefined

Obtient le cookie sous la forme d’un objet AstroCookie, qui contient la value et des fonctions utilitaires pour convertir le cookie en types autres que des chaünes de caractùres.

Type : (key: string, options?: AstroCookieGetOptions) => boolean

Détermine si ce cookie existe. Si le cookie a été défini via Astro.cookies.set() cela retournera true, sinon cela vérifiera les cookies dans Astro.request.

Type : (key: string, value: string | object, options?: AstroCookieSetOptions) => void

Définit la clé du cookie (key) sur la valeur donnée. Cela tentera de convertir la valeur du cookie en une chaßne de caractÚres. Les options permettent de définir les caractéristiques du cookie, comme maxAge ou httpOnly.

Type : (key: string, options?: AstroCookieDeleteOptions) => void

Invalide un cookie en dĂ©finissant la date d’expiration dans le passĂ© (0 en temps Unix).

Une fois qu’un cookie est « supprimé » (expirĂ©), Astro.cookies.has() retournera false et Astro.cookies.get() retournera un AstroCookie avec une valeur (value) indĂ©finie (undefined). Les options disponibles lors de la suppression d’un cookie sont : domain, path, httpOnly, sameSite, et secure.

Type : (cookies: AstroCookies) => void

Fusionne une nouvelle instance AstroCookies dans l’instance actuelle. Tous les nouveaux cookies seront ajoutĂ©s Ă  l’instance actuelle et tous les cookies portant le mĂȘme nom remplaceront les valeurs existantes.

Type : () => Iterator<string>

Obtient les valeurs de l’en-tĂȘte Set-Cookie qui seront envoyĂ©es avec la rĂ©ponse.

Le type renvoyĂ© aprĂšs l’obtention d’un cookie via Astro.cookies.get(). Il a la structure suivante :

Type : string

La valeur brute de la chaĂźne du cookie.

Type : () => Record<string, any>

Analyse la valeur du cookie via JSON.parse(), retournant un objet. GĂ©nĂšre une erreur si la valeur du cookie n’est pas un JSON valide.

Type : () => number

Analyse la valeur du cookie en tant que nombre. Renvoie NaN s’il ne s’agit pas d’un nombre valide.

Type : () => boolean

Convertit la valeur du cookie en un booléen.

Ajouté à la version : astro@4.1.0

L’interface AstroCookieGetOption vous permet de spĂ©cifier des options lorsque vous recevez un cookie.

Type : (value: string) => string

Permet de personnaliser la maniÚre dont un cookie est désérialisé en une valeur.

Ajouté à la version : astro@4.1.0

AstroCookieSetOptions est un objet qui peut ĂȘtre transmis Ă  Astro.cookies.set() lors de la dĂ©finition d’un cookie pour personnaliser la maniĂšre dont le cookie est sĂ©rialisĂ©.

Type : string

SpĂ©cifie le domaine. Si aucun domaine n’est dĂ©fini, la plupart des clients interprĂ©teront cela comme s’appliquant au domaine actuel.

Type : Date

SpĂ©cifie la date d’expiration du cookie.

Type : boolean

Si la valeur est true, le cookie ne sera pas accessible cÎté client.

Type : number

Spécifie un nombre, en secondes, pour lequel le cookie est valide.

Type : string

Spécifie un sous-chemin du domaine dans lequel le cookie est appliqué.

Type : boolean

Ajouté à la version : astro@5.17.0

Si la valeur est true, le cookie est un cookie partitionnĂ©. Les cookies partitionnĂ©s ne peuvent ĂȘtre lus que dans le contexte du site de niveau supĂ©rieur dans lequel ils ont Ă©tĂ© dĂ©finis, ce qui permet de bloquer le suivi intersites tout en autorisant les utilisations lĂ©gitimes des cookies tiers.

Les cookies partitionnĂ©s doivent ĂȘtre dĂ©finis avec secure: true.

Type : boolean | 'lax' | 'none' | 'strict'

SpĂ©cifie la valeur de l’en-tĂȘte du cookie SameSite.

Type : boolean

Si c’est vrai, le cookie n’est dĂ©fini que sur les sites https.

Type : (value: string) => string

Permet de personnaliser la façon dont le cookie est sérialisé.

Type : AstroSession

Ajouté à la version : astro@5.7.0

session est un objet qui permet de stocker des donnĂ©es entre les requĂȘtes pour les routes rendues Ă  la demande. Il est associĂ© Ă  un cookie qui contient uniquement l’ID de session : les donnĂ©es elles-mĂȘmes ne sont pas stockĂ©es dans le cookie.

La session est créée lors de la premiĂšre utilisation et le cookie de session est automatiquement dĂ©fini. L’objet session a pour valeur undefined si aucun stockage de session n’a Ă©tĂ© configurĂ©, ou si la route actuelle est prĂ©-rendue, et enregistrera une erreur si vous essayez de l’utiliser.

Consultez le guide des sessions pour plus d’informations sur la façon d’utiliser les sessions dans votre projet Astro.

Type : (key: string) => Promise<any>

Renvoie la valeur de la clĂ© donnĂ©e dans la session. Si la clĂ© n’existe pas, la fonction renvoie undefined.

src/components/Cart.astro
---
const cart = await Astro.session?.get('cart');
---
<button>🛒 {cart?.length}</button>

Type : (key: string, value: any, options?: { ttl: number }) => void

DĂ©finit la valeur de la clĂ© donnĂ©e dans la session. Cette valeur peut ĂȘtre de tout type sĂ©rialisable. Cette mĂ©thode est synchrone et la valeur est immĂ©diatement disponible pour rĂ©cupĂ©ration, mais elle n’est enregistrĂ©e dans le backend qu’à la fin de la requĂȘte.

src/pages/products/[slug].astro
---
const { slug } = Astro.params;
Astro.session?.set('lastViewedProduct', slug);
---

Type : () => void

RĂ©gĂ©nĂšre l’ID de session. Appelez cette fonction lorsqu’un utilisateur se connecte ou augmente ses privilĂšges, afin d’éviter les attaques par fixation de session.

src/pages/welcome.astro
---
Astro.session?.regenerate();
---

Type : () => void

DĂ©truit la session en supprimant le cookie et l’objet du backend. Appelez cette fonction lorsqu’un utilisateur se dĂ©connecte ou que sa session est invalidĂ©e.

src/pages/logout.astro
---
Astro.session?.destroy();
return Astro.redirect('/login');
---

Type : (id: string) => Promise<void>

Charge une session par identifiant. En utilisation normale, une session est chargĂ©e automatiquement Ă  partir du cookie de requĂȘte. Utilisez cette mĂ©thode pour charger une session Ă  partir d’un identifiant diffĂ©rent. Ceci est utile si vous gĂ©rez vous-mĂȘme l’identifiant de session ou si vous souhaitez suivre une session sans utiliser de cookies.

src/pages/cart.astro
---
// Charger la session Ă  partir d'un en-tĂȘte au lieu de cookies
const sessionId = Astro.request.headers.get('x-session-id');
await Astro.session?.load(sessionId);
const cart = await Astro.session?.get('cart');
---
<h1>Votre panier</h1>
<ul>
{cart?.map((item) => (
<li>{item.name}</li>
))}
</ul>

Astro.glob() est un moyen de charger de nombreux fichiers locaux dans la configuration de votre site statique.

src/components/my-component.astro
---
const posts = await Astro.glob('../pages/post/*.md'); // renvoie un tableau d'articles qui se trouvent dans ./src/pages/post/*.md
---
<div>
{posts.slice(0, 3).map((post) => (
<article>
<h2>{post.frontmatter.title}</h2>
<p>{post.frontmatter.description}</p>
<a href={post.url}>Lire la suite</a>
</article>
))}
</div>

.glob() ne prend qu’un seul paramùtre : une URL relative glob des fichiers locaux que vous souhaitez importer. Elle est asynchrone et renvoie un tableau des exportations des fichiers correspondants.

.glob() ne peut pas prendre de variables ou de chaĂźnes de caractĂšres qui les interpolent, car elles ne sont pas analysables statiquement. (Consultez le guide d’importation pour une solution de contournement.) Ceci est dĂ» au fait que Astro.glob() est un wrapper de import.meta.glob() de Vite.

Les fichiers Markdown chargĂ©s avec Astro.glob() renvoient l’interface MarkdownInstance suivante :

export interface MarkdownInstance<T extends Record<string, any>> {
/* Toutes les données spécifiées dans le frontmatter YAML/TOML de ce fichier */
frontmatter: T;
/* Le chemin d'accĂšs absolu de ce fichier */
file: string;
/* Le chemin rendu de ce fichier */
url: string | undefined;
/* Composant Astro qui restitue le contenu de ce fichier */
Content: AstroComponentFactory;
/** (Markdown uniquement) Contenu du fichier Markdown brut, Ă  l'exclusion de la mise en page HTML et du frontmatter YAML/TOML */
rawContent(): string;
/** (Markdown uniquement) Fichier Markdown compilé en HTML, à l'exclusion de la mise en page HTML */
compiledContent(): string;
/* Fonction qui renvoie un tableau des éléments h1...h6 dans ce fichier */
getHeadings(): Promise<{ depth: number; slug: string; text: string }[]>;
default: AstroComponentFactory;
}

Vous pouvez Ă©ventuellement fournir un type pour la variable frontmatter Ă  l’aide d’un gĂ©nĂ©rique TypeScript.

---
interface Frontmatter {
title: string;
description?: string;
}
const posts = await Astro.glob<Frontmatter>('../pages/post/*.md');
---
<ul>
{posts.map(post => <li>{post.frontmatter.title}</li>)}
</ul>

Les fichiers Astro ont l’interface suivante :

export interface AstroInstance {
/* Le chemin d'accĂšs de ce fichier */
file: string;
/* L'URL de ce fichier (s'il se trouve dans le répertoire des pages) */
url: string | undefined;
default: AstroComponentFactory;
}

D’autres fichiers peuvent avoir diffĂ©rentes interfaces, mais Astro.glob() accepte un gĂ©nĂ©rique TypeScript si vous savez exactement ce que contient un type de fichier non reconnu.

---
interface CustomDataFile {
default: Record<string, any>;
}
const data = await Astro.glob<CustomDataFile>('../data/**/*.js');
---
Contribuer Communauté Parrainer