Les dernières actualités d'Alsacreations.com
Nuxt est un framework que nous apprécions pour son efficacité dans de multiples situations, projets de sites ou d'applications web. Il comporte nativement des aides bien agréables pour contrôler plus finement la performance et la façon dont les composants sont compilés et chargés, notamment Lazy et ClientOnly.
Ce ne sont pas les seules approches possibles, mais souvent les plus rapides à intégrer, et parfois combinées.
LazyExemple :
<LazyMonComposant />
Le préfixe Lazy active le code-splitting automatique via des imports dynamiques (defineAsyncComponent).
v-if à l'état initial, le code n'est téléchargé sur le client qu'au moment où la condition passe à true.Dans les outils de bundling comme Vite, Webpack, Rollup, un chunk désigne un fichier généré contenant une partie du code de l'application ou du site. Cela permet de :
- Diviser le code en morceaux pour optimiser le chargement (ex. : code splitting).
- Charger dynamiquement et de façon asynchrone des parties de l'application, c'est à dire ne charger qu'à la demande certaines fonctionnalités quand on en a réellement besoin, et pas par défaut.
<ClientOnly>Exemple :
<ClientOnly>
<MonComposant/>
</ClientOnly>
<ClientOnly> désactive le rendu côté serveur (SSR) pour la partie du code ciblée. Comme son nom l'indique, le code est destiné exclusivement au "client" c'est-à-dire au navigateur.
window, document).Combiner les deux permet de différer à la fois le SSR et le chargement du JavaScript.
Lazy) et n'est pas requis pour le rendu serveur (grâce à <ClientOnly>).Pour éviter un saut visuel (CLS) le temps que le chunk soit téléchargé et exécuté, il faut utiliser le slot #fallback ou #placeholder de <ClientOnly>.
| Approche | Poids bundle initial | SSR (Serveur) | Chargement du JS |
|---|---|---|---|
| Composant standard | Inclus | Rendu sur le serveur | Immédiat |
Lazy |
Exclu (chunk séparé) | Rendu si présent au load | À la volée (ou préchargé) |
<ClientOnly> |
Inclus | Ignoré | Évalué au montage client |
ClientOnly + Lazy |
Exclu (chunk séparé) | Ignoré | Téléchargé au montage client |