Composants Framework
Construisez votre site Astro sans sacrifier votre Framework favori.
Astro supporte un large choix de Frameworks comme React, Preact, Svelte, Vue, SolidJS, AlpineJS et Lit.
Installation d’intégrations
Titre de la section Installation d’intégrationsAstro est livré avec des intégrations optionnelles pour React, Preact, Svelte, Vue, SolidJS, AlpineJS et Lit. Une ou plusieurs de ces intégrations Astro peuvent être installées et configurées dans votre projet.
⚙️ Consultez le Guide d’Intégrations pour plus de détails sur l’installation et la configuration d’intégrations Astro.
⚙️ Vous voulez voir un exemple pour le Framework de votre choix ? Visitez astro.new et sélectionnez un des modèles de Framework disponible.
Utilisation des composants de Framework
Titre de la section Utilisation des composants de FrameworkUtilisez vos composants de Framework JavaScript dans vos composants Astro, Pages et Layouts comme des composants Astro classiques ! Tous vos composants peuvent être placés dans /src/components
, ou peuvent être organisés de la manière que vous le souhaitez.
Pour utiliser un composant du framework, importez-le à partir de son chemin d’accès relatif dans votre script de composant Astro. Ensuite, utilisez le composant avec d’autres composants, éléments HTML et expressions de type JSX dans le modèle de composant.
Par défaut, vos composants de Framework seront rendus en HTML statique. C’est pratique pour les composants qui n’ont pas à être interactifs et évite de transmettre à l’utilisateur du JavaScript inutile.
Hydratation des composants interactifs
Titre de la section Hydratation des composants interactifsUn composant du framework peut être rendu interactif (hydraté) à l’aide d’une directive client:*
. Il s’agit d’attributs de composant qui déterminent quand le JavaScript de votre composant doit être envoyé au navigateur.
Avec toutes les directives client à l’exception de client:only
, votre composant sera d’abord rendu sur le serveur pour générer du HTML statique. Le JavaScript du composant sera envoyé au navigateur en fonction de la directive que vous avez choisie. Le composant s’hydrate alors et devient interactif.
Le framework JavaScript (React, Svelte, etc.) nécessaire au rendu du composant sera envoyé au navigateur avec le JavaScript du composant. Si deux composants ou plus sur une page utilisent le même framework, le framework ne sera envoyé qu’une seule fois.
La plupart des modèles d’accessibilité spécifiques au framework devraient fonctionner de la même manière lorsque ces composants sont utilisés dans Astro. Veillez à choisir une directive client qui garantira que tout JavaScript lié à l’accessibilité est correctement chargé et exécuté au moment opportun !
Directives d’hydratation disponibles
Titre de la section Directives d’hydratation disponiblesIl y a plusieurs directives d’hydratation disponibles pour les composants de Framework : client:load
, client:idle
, client:visible
, client:media={QUERY}
et client:only={FRAMEWORK}
.
📚 Allez voir notre page de référence des directives pour une description complète de ces directives, et de leur utilisation.
Mixer des Frameworks
Titre de la section Mixer des FrameworksVous pouvez importer et afficher des composants de plusieurs Frameworks, dans le même composant Astro.
Seul les composants Astro (.astro
) peuvent contenir des composants de différents Frameworks.
Transmettre des Props aux composants du framework
Titre de la section Transmettre des Props aux composants du frameworkLes composants Astro peuvent transmettre des proprétés (Props) aux composants du framework :
Vous pouvez passer une fonction comme prop à un composant du framework, mais cela ne fonctionne que pendant le rendu du serveur. Si vous essayez d’utiliser la fonction dans un composant hydraté (par exemple, en tant que gestionnaire d’événements), une erreur se produira.
En effet, les fonctions ne peuvent pas être sérialisées (transférées du serveur au client) par Astro.
Passer des Enfants à des Composants de Framework
Titre de la section Passer des Enfants à des Composants de FrameworkDans un composant Astro, vous pouvez passer des enfants à des composants de Framework. Chaque Framework a son propre modèle pour référencer ces enfants : React, Preact et Solid utilisent une propriété spéciale nommée children
, tandis que Svelte et Vue utilisent l’élément <slot />
.
De plus, vous pouvez utiliser les “Slots” Nommés pour grouper des enfants spécifiques ensemble.
Dans React, Preact et Solid, ces “Slots” seront convertis en propriété de niveau supérieur. Les noms de slots utilisant le format kebab-case
seront convertis en camelCase
.
Pour Svelte et Vue ces slots peuvent être référencés avec un élément <slot>
et l’attribut name
. Les noms de slots utilisant le format kebab-case
seront conservés.
Imbriquer des composants de Framework
Titre de la section Imbriquer des composants de FrameworkDans un fichier Astro, les enfants de composants de Framework peuvent aussi être des composants hydratés. Cela signifie que vous pouvez imbriquer des composants de Framework dans d’autres composants de Framework.
N’oubliez pas : les fichiers composants de Framework eux-mêmes (par exemple .jsx
, .svelte
) ne peuvent pas se mélanger à d’autres Frameworks.
Ceci permet de construire des “apps” entières dans votre Framework JavaScript préféré et de les rendre via un composant parent, à une page Astro.
Les composants sont toujours rendus en HTML statique, même lorsqu’ils contiennent des composants de Framework qui sont hydratés. Cela signifie que vous ne pouvez pas passer des propriétés render
à un composant de Framework depuis un composant Astro. Les composants Astro ne peuvent pas fournir le comportement client requis par ce modèle. À la place, vous pouvez utiliser les “Slots” nommés.
Puis-je utiliser les composants Astro à l’intérieur des composants de mon framework ?
Titre de la section Puis-je utiliser les composants Astro à l’intérieur des composants de mon framework ?Tout composant d’interface utilisateur devient une “île” de ce framework. Ces composants doivent être écrits entièrement comme du code valide pour ce framework, en utilisant uniquement ses propres importations et paquets. Vous ne pouvez pas importer des composants .astro
dans un composant de framework d’interface utilisateur (par exemple .jsx
ou .svelte
).
Vous pouvez cependant utiliser le pattern Astro <slot />
pour passer du contenu statique généré par des composants Astro en tant qu’enfants à vos composants framework à l’intérieur d’un composant .astro
.
Puis-je hydrater des composants Astro ?
Titre de la section Puis-je hydrater des composants Astro ?Si vous essayez d’hydrater un composant Astro avec un modificateur client:
, vous obtiendrez une erreur.
Les composants Astro sont des composants de modélisation HTML uniquement, sans exécution côté client. Cependant, vous pouvez utiliser une balise <script>
dans votre modèle de composant Astro pour envoyer du JavaScript au navigateur qui s’exécute dans la portée globale.
📚 Apprenez-en plus sur les <script>
client-side dans les composants Astro