Angular version 20 vient tout juste d'ĂȘtre publiĂ©e, et aujourd'hui nous allons parler dâun sujet trĂšs demandĂ© par la communautĂ© : le Server-Side Rendering (SSR), lâhydratation, et comment ces concepts sâintĂšgrent dans Angular.
Jâaime particuliĂšrement lâhydratation incrĂ©mentale dans Angular, et nous y reviendrons en dĂ©tail.
Il sâagit ici de la premiĂšre partie dâune sĂ©rie en plusieurs articles. Nous commencerons par comprendre ce quâest le SSR.
đ€ Quâest-ce que le Server-Side Rendering (SSR) ?
Lorsque nous parlons de Server-Side Rendering, cela signifie que lâon gĂ©nĂšre le HTML entiĂšrement rendu cĂŽtĂ© serveur, Ă la demande.
đĄ Le mot clĂ© ici est âĂ la demandeâ â cela signifie que chaque fois quâun utilisateur accĂšde Ă une route spĂ©cifique, le serveur exĂ©cute un processus de rendu complet et retourne le HTML dĂ©jĂ construit au navigateur.
Cela implique une charge supplĂ©mentaire sur le serveur, car chaque requĂȘte dĂ©clenche un nouveau rendu. Câest donc idĂ©al pour les pages dynamiques : par exemple, lorsque vous devez rĂ©cupĂ©rer des donnĂ©es depuis une base de donnĂ©es, les intĂ©grer dans le template, et envoyer le rĂ©sultat au client.
â Avantages du SSR :
- Affichage immĂ©diat du contenu : pas dâĂ©cran blanc ou de loader.
- Meilleure expérience utilisateur : le contenu arrive déjà formé.
- SEO amélioré : les moteurs de recherche indexent facilement le contenu rendu.
- Gestion prĂ©visible des appels API : les requĂȘtes peuvent ĂȘtre effectuĂ©es directement sur le serveur.
đ CSR vs SSR : Une question de contexte
Avec le Client-Side Rendering (CSR), le serveur renvoie uniquement un shell HTML accompagnĂ© du bundle JavaScript. Ce nâest quâensuite, cĂŽtĂ© client, que lâapplication Angular prend le relais pour afficher le contenu rĂ©el.
Le CSR excelle dans les applications monopages (SPA), surtout lors des navigations suivantes. Une fois la page initiale chargée, Angular peut charger les routes suivantes de maniÚre asynchrone, offrant une navigation fluide sans rechargement complet.
En revanche, le SSR brille dÚs la premiÚre visite : le contenu est immédiatement visible, ce qui améliore le First Contentful Paint (FCP) et le Largest Contentful Paint (LCP).
âïž CrĂ©er une application Angular 20 avec SSR
Pour créer une nouvelle application Angular avec SSR activé :
ng new ngv20-demo-app --ssr
Choisissez CSS
comme style et dĂ©sactivez Zoneless mode pour lâinstant.
Ce projet inclut automatiquement tous les fichiers nĂ©cessaires Ă lâexĂ©cution du SSR via Express.js :
- src/main.server.ts
- src/server.ts
- src/app.routes.ts
AprÚs avoir généré le projet, lancez-le en mode développement :
ng build
npm run serve:ssr
Votre application sera accessible Ă lâadresse http://localhost:4000
.
đ Structure du projet Angular SSR
Dans votre dossier dist/
, vous trouverez deux sous-dossiers :
- browser/
: contient les fichiers statiques (HTML, JS, CSS)
- server/
: contient le bundle serveur (main.js
, server.mjs
, etc.)
Le fichier server.ts
configure le serveur Express et utilise le package @angular/ssr/node
pour rendre lâapplication cĂŽtĂ© serveur.
đ§Ș Tester les diffĂ©rents modes de rendu
Angular v20 permet de configurer facilement le mode de rendu dans le fichier app.routes.ts
. Les options sont :
- 'client'
: rendu uniquement cÎté client
- 'server'
: rendu cĂŽtĂ© serveur Ă chaque requĂȘte
- 'prerender'
: rendu statique fait Ă la compilation
Exemple :
{
path: '',
component: AppComponent,
data: { renderMode: 'server' }
}
Ajouter un log dans AppComponent
Ajoutez un log dans ngOnInit
pour observer oĂč le composant est initialisĂ© :
import { Component, OnInit } from '@angular/core';
@Component({
selector: 'app-root',
templateUrl: './app.component.html'
})
export class AppComponent implements OnInit {
ngOnInit() {
console.log('App initialized');
}
}
đ VĂ©rifier le type de rendu
Utilisez "View Page Source" dans votre navigateur pour voir si le HTML provient du serveur ou non.
En mode CSR :
- Vous verrez uniquement un shell HTML (
<app-root>
). - Tout le contenu est généré cÎté client aprÚs le chargement de JavaScript.
En mode SSR :
- Le code source affiche le contenu entiĂšrement rendu.
- Un log apparaĂźt Ă chaque rafraĂźchissement dans le terminal du serveur.
En mode Pré-rendu :
- Le contenu est également visible dans la source.
- Mais le log ne sâaffiche quâune seule fois : pendant la compilation (
ng build
).
đ ïž Hydratation incrĂ©mentale dans Angular v20
Une nouveautĂ© importante dans Angular v20 est lâhydratation incrĂ©mentale.
đ Angular v20 Note : Lâhydratation incrĂ©mentale permet de rendre certaines parties de lâapplication interactives plus rapidement, sans attendre que toute lâapplication soit prĂȘte.
Au lieu dâhydrater lâapplication entiĂšre dâun coup, Angular peut dĂ©sormais hydrater progressivement les composants visibles, amĂ©liorant ainsi les performances perçues.
đŻ Comment choisir entre SSR, CSR et PrĂ©-rendu ?
| Cas dâutilisation | Mode recommandĂ© | |-------------------|------------------| | Pages dynamiques (blog, produits, profils) | SSR | | Tableaux de bord internes | CSR | | Pages statiques (mentions lĂ©gales, FAQ) | PrĂ©-rendu | | Sites avec millions de visiteurs | CSR ou PrĂ©-rendu (moins coĂ»teux pour le serveur) |
đ Prochain article : DĂ©ferrement avec defer blocks
Dans le prochain épisode de cette série, nous explorerons les blocs différés (defer blocks
), une fonctionnalitĂ© puissante dâAngular qui permet de charger certains composants uniquement quand ils sont nĂ©cessaires.
Nous verrons comment cela fonctionne avec le SSR et comment cela améliore les temps de chargement initiaux.
đŹ Conclusion
Comprendre les diffĂ©rentes stratĂ©gies de rendu dans Angular vous donne la libertĂ© de faire des choix Ă©clairĂ©s concernant les performances, le rĂ©fĂ©rencement et lâexpĂ©rience utilisateur.
Avec Angular v20, le SSR est plus accessible que jamais. Il nây a donc aucune raison de ne pas lâutiliser pour les applications publics oĂč le SEO est essentiel.
Restez connecté pour la suite de cette série !