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
Astro peut être installé avec des intégrations pour React, Preact, Svelte, Vue, SolidJS et Lit. Une ou plusieurs de ces intégrations peuvent être installées et configurées dans votre projet.
Afin de configurer Astro pour utiliser ces Frameworks, d’abord, installez son intégration et toutes ses dépendances associées :
Ensuite, importez et ajoutez la fonction à votre liste d’intégrations dans astro.config.mjs
:
⚙️ 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
Utilisez 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 de Framework, importez-le à partir de son chemin relatif (y compris l’extension de fichier) dans le script du composant Astro. Ensuite, utilisez le composant avec d’autres composants, des éléments HTML et des expressions similaire au JSX dans le modèle du composant.
N’oubliez pas : Toutes les importations doivent être en haut de votre script de composant Astro !
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
Un composant de Framework peut être hydraté en utilisant une directive client:*
. C’est un attribut de composant pour définir comment votre composant devrait être rendu et hydraté.
Cette directive client:*
définit si oui ou non votre composant doit être rendu au moment de la compilation, et quand votre composant doit être chargé par le navigateur, côté client.
La plupart des directives rendront le composant sur le serveur à la compilation. Le JS du composant sera envoyé au client en fonction de la directive spécifiée. Le composant sera hydraté quand son JS aura terminé l’importation.
Tout le JS de rendu nécessaire au Framework (par exemple React, Svelte) est téléchargé avec la page. Les directives client:*
définissent seulement quand le JS du composant est importé et quand le composant est hydraté.
Directives d’hydratation disponibles
Il 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
Vous 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.
Passer des Enfants à des Composants de Framework
Dans 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
Dans 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 applications 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 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 Template uniquement en HTML sans éxécution côté client. Mais, vous pouvez utiliser une balise <script>
dans votre Template de composant Astro pour envoyer du JavaScript au navigateur qui s’exécute dans le contexte global
📚 Apprenez-en plus sur les <script>
client-side dans les composants Astro