Dans ce chapitre nous allons voir comment React peut être utilisé côté serveur.
Pourquoi rendre côté serveur ?
Si vous utilisez React pour générer des pages complètes plusieurs problèmes peuvent apparaitre.
- Le référencement des sites est impossible car la page HTML est vide sans l'intervention du JavaScript.
- L'expérience utilisateur sur une connexion limitée n'est pas optimale car rien ne peut être affiché tant que le JavaScript n'est pas chargé (l'utilisateur se retrouve avec une page blanche initialement).
La solution à ce problème est de faire du rendu côté serveur (ou statique) pour délivrer le contenu HTML directement tout en gardant la possibilité de dynamiser la page côté client après coup.
react-dom côté serveur
ReactDOM permet de générer une structure HTML à partir des noeuds de notre DOM virtuel.
Et voila ! Votre application React sera utilisé pour le rendu HTML de vos pages. Mais en l'état cela n'est pas vraiment utile.
L'hydratation
Seul, le rendu côté serveur n'est pas vraiment intéréssant. Ce qui rend l'utilisation de React côté serveur intéréssant est la possibilité d'utiliser ensuite la structure générée côté client.
On n'utilise pas ici la méthode render(), mais plutôt la méthode hydrate() qui ne va pas reconstruire le DOM mais se brancher à la structure HTML existante en y ajoutant les écouteurs d'évènements.
Les problèmes
Comme vous le voyez le principe est plutôt simple dans la théorie. Dans la pratique les choses sont beaucoup plus complexes car il faudra faire en sorte que l'ensemble de vos composants puisse fonctionner à la fois côté serveur et côté client. Il faudra aussi trouver des solution pour construire votre code dans les 2 environnements. Voici un petit exemple de configuration basique avec esbuild (vous pouvez utiliser )