Composants Layout
Les Layouts (ou “mise-en-pages” en français) sont des composants Astro utilisés pour fournir une structure d’interface utilisateur réutilisable, comme un modèle de page.
Par convention, nous utilisons le terme “mise en page” pour les composants Astro qui fournissent des éléments d’interface utilisateur commune à toutes les pages, tels que les en-têtes, les barres de navigation et les pieds de page. Un composant de mise en page typique d’Astro fournit aux pages Astro, Markdown ou MDX les éléments suivants :
- une page shell (
balises <html>
,<head>
et<body>
) - un
<slot />
pour spécifier où le contenu de chaque page doit être injecté.
Mais, un composant de mise en page n’a rien de spécial ! Ils peuvent accepter des propriétés et importer et utiliser d’autres composants comme n’importe quel autre composant Astro. Ils peuvent inclure des composants de frameworks d’interface utilisateur et des scripts côté client. Ils ne sont même pas obligés de fournir une page shell complète, et peuvent plutôt être utilisés comme des modèles d’interface utilisateur partielle.
Les composants de mise en pages sont généralement placés dans un dossier src/layouts
dans votre projet pour l’organisation, mais ce n’est pas une obligation.
Exemple de composant de mise en page
Section titled Exemple de composant de mise en page📚 Apprenez-en plus sur les Slots.
Mises en page Markdown/MDX
Section titled Mises en page Markdown/MDXLes composants de mise en page sont particulièrement utiles pour les pages Markdown et MDX qui, autrement, n’auraient pas de formatage de page.
Astro fournit une propriété spéciale layout
frontmatter pour spécifier le composant .astro
à utiliser comme mise en page.
Une mise en page typique pour les pages Markdown ou MDX inclut :
- La propriété
frontmatter
pour accéder au frontmatter et aux autres données de la page Markdown ou MDX. - Un
<slot />
par défaut pour indiquer où le contenu Markdown/MDX de la page doit être rendu.
Vous pouvez définir le type Props
d’une mise en page, avec l’helper MarkdownLayoutProps
ou MDXLayoutProps
:
Propriétés de mise en page Markdown
Section titled Propriétés de mise en page MarkdownUne mise en page Markdown/MDX aura accès aux informations suivantes via Astro.props
:
file
- Le chemin absolu de ce fichier (exemple :/home/user/projects/.../file.md
).url
- Si c’est une page, l’URL de cette page (exemple :/fr/guides/markdown-content
).frontmatter
- Tous les éléments frontmatter du document Markdown ou MDX.frontmatter.file
- Identique à la propriétéfile
de premier niveau.frontmatter.url
- Identique à la propriétéurl
de premier niveau.
headings
- Une liste de titre (h1 -> h6
) dans le document Markdown ou MDX avec les métadonnées associées. Cette liste suit le type :{ depth: number; slug: string; text: string }[]
.- (Markdown only)
rawContent()
- Une fonction qui renvoie le document Markdown brut sous forme de chaine de caractères. - (Markdown only)
compiledContent()
- Une fonction qui renvoie le document Markdown compilé en tant que chaine de caractères HTML.
Un exemple de billet de blog en format Markdown peut transmettre l’objet Astro.props
suivant à sa mise en page :
Importation manuelle de mises en page (MDX)
Section titled Importation manuelle de mises en page (MDX)Vous pouvez avoir besoin de transmettre à votre mise en page MDX des informations qui n’existent pas (ou ne peuvent pas exister) dans votre frontmatter. Dans ce cas, vous pouvez à la place importer et utiliser un composant <Layout />
et lui passer des propriétés comme n’importe quel autre composant :
Ensuite, vos valeurs sont disponibles à travers Astro.props
dans votre mise en page, et votre contenu MDX va être injecté dans la page où votre composant <slot />
est écrit :
📚 Pour en savoir plus sur la prise en charge de Markdown et de MDX par Astro, consultez notre guide Markdown/MDX.
Utilisation d’une mise en page unique pour les fichiers .md
, .mdx
et .astro
.
Section titled Utilisation d’une mise en page unique pour les fichiers .md, .mdx et .astro.Une unique mise en page Astro peut être écrite pour recevoir l’objet frontmatter
des fichiers .md
et .mdx
, ainsi que toutes les propriétés nommées, passées depuis les fichiers .astro
.
Dans l’exemple ci-dessous, la mise en page va afficher le titre de la page, soit depuis un composant Astro en passant un attribut title
, soit depuis la propriété YAML title
de frontmatter :
Mises en page d’emboîtement
Section titled Mises en page d’emboîtementLes composants de mises en pages ne doivent pas nécessairement contenir une page entière de HTML. Vous pouvez décomposer vos mises en page en composants plus petits et combiner des composants de mises en page pour créer des templates de page encore plus flexibles.
Par exemple, un composant de mise en page BlogPostLayout.astro
peut styliser le titre, la date et l’auteur d’un article. Ensuite, un BaseLayout.astro
pour tout le site pourrait gérer le reste de votre template de page, comme la navigation et les pieds de page. Vous pouvez également transmettre les propriétés reçues de votre message à une autre mise en page, comme tout autre composant imbriqué.