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.
L’objet de contexte
Section intitulée « L’objet de contexte »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.
---const { title, date } = Astro.props;---<div> <h1>{title}</h1> <p>{date}</p></div>---import Heading from '../components/Heading.astro';---<Heading title="Mon tout premier article" date="09 Août 2022" />L’objet props contient également toutes les props transmises depuis getStaticPaths() lors du rendu des routes statiques.
---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;---import type { APIContext } from 'astro';
export function getStaticPaths() { return [ { params: { id: '1' }, props: { author: 'Blu' } }, { params: { id: '2' }, props: { author: 'Erika' } }, { params: { id: '3' }, props: { author: 'Matthew' } } ];}
export function GET({ props }: APIContext) { return new Response( JSON.stringify({ author: props.author }), );}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.
---export function getStaticPaths() { return [ { params: { id: '1' } }, { params: { id: '2' } }, { params: { id: '3' } } ];}const { id } = Astro.params;---<h1>{id}</h1>import type { APIContext } from 'astro';
export function getStaticPaths() { return [ { params: { id: '1' } }, { params: { id: '2' } }, { params: { id: '3' } } ];}
export function GET({ params }: APIContext) { return new Response( JSON.stringify({ id: params.id }), );}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.
---import { getPost } from '../api';
const post = await getPost(Astro.params.id);
// Aucun article trouvé avec cet identifiantif (!post) { return Astro.redirect("/404")}---<html> <h1>{post.name}</h1></html>Voir aussi : params
Type : URL
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.
<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().
---// Exemple : créer une URL canonique à l'aide de votre domaine de productionconst canonicalURL = new URL(Astro.url.pathname, Astro.site);// Exemple : créez une URL pour les balises méta SEO en utilisant votre domaine actuelconst 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.
<link rel="alternate" type="application/rss+xml" title="Le titre de votre site" href={new URL("rss.xml", Astro.site)}/>clientAddress
Section intitulée « clientAddress »Type : string
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.
---export const prerender = false; // Pas nécessaire en mode `server`---
<div>Votre adresse IP est : <span class="address">{Astro.clientAddress}</span></div>export const prerender = false; // Pas nécessaire en mode `server`import type { APIContext } from 'astro';
export function GET({ clientAddress }: APIContext) { return new Response(`Votre adresse IP est : ${clientAddress}`);}isPrerendered
Section intitulée « isPrerendered »Type : boolean
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.
generator
Section intitulée « generator »Type : string
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".
<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>