Par Eric Burel - Formateur chez LBKE
Publié le
Les images sont cruciales sur un site web mais posent des problèmes de performance si elles ne sont pas implémentées correctement : chargement très lent, consommation de bande passante élevée…
Cela peut devenir très problématique pour l’utilisateur final, surtout lors de la navigation mobile.
La balise HTML <img>
ne permet pas de résoudre ces problèmes, c’est pourquoi Next.js fournit un composant Image
pour la remplacer et l’améliorer.
Le composant Image permet d’optimiser et de servir les images de manière efficace. Le composant va déclencher :
En particulier, le CLS mesure les sauts dans la page quand l’image est chargée et que sa dimension réelle devient connue. On veut bien sûr éliminer ces sauts.
En utilisant le composant Image
au lieu de la balise <img>
standard, vous profitez directement de tous ces apports sans avoir à optimiser manuellement chaque fichier en amont.
<img>
Rien de mieux qu’un tableau récapitulatif pour bien comprendre ce qu’il se passe quand on utilise le composant Image
:
Code | Évite le Layout Shift ? | Optimisation des fichiers ? |
---|---|---|
<img src={...} /> | Non | Non |
<img src={...} width={500} height={500} /> | Oui | Non |
import img from "./img.png"; <Image src={img} /> | Oui, largeur/hauteur déduites automatiquement | Oui |
import img from "./img.png"; <Image src={img} width={500} height={500} /> | Oui, respecte les attributs width/height | Oui |
<Image src="/url/img.png" width={500} height={500} /> | Oui, respecte les attributs width/height | Oui |
<Image src="/url/img.png" /> | Non, génère une erreur | N/A |
On comprend évidemement l’intérêt d’optimiser la taille du fichier image, mais il ne faut pas sous-estimer l’intérêt d’éviter au passage les shifts.
Vous remarquerez que si vous utilisez une image distante, via son URL, il faut bien configurer sa taille et sa hauteur pour éviter ces sauts de mise en page.
La documentation de Next.js vous permettra d’aller plus loin pour comprendre tous les cas particuliers.
Bien que le composant Image
de Next.js soit très efficace, vous pouvez avoir besoin de plus de contrôle sur le processus d’optimisation.
Voici quelques approches alternatives :
Vous connaissez maitenant les grandes lignes, mais le mieux pour vraiment comprendre le composant Image, c’est de l’essayer !
Vous avez apprécié cette ressource ?
Découvrez toutes nos formations Next.js, Astro.js et LangChain en présentiel ou en distanciel
Eric Burel est ingénieur diplômé de l'ENSIMAG. Il est co-fondateur de LBKE et a contribué à la création de plusieurs startups technologiques en tant que développeur freelance.
Eric est impliqué dans l'open source en tant que membre du collectif Devographics, qui organise les enquêtes annuelles "State of" JavaScript, React et AI.
Il contribue aussi au domaine de l'intelligence artificielle en tant que membre de la communauté LangChain.
Depuis 2018, Eric intervient comme formateur en entreprise et enseignant en école d'ingénieur, dans le domaine du développement web et du développement LLM.
Ses années d'expérience en tant que consultant lui ont permis de développer une culture technique large, qu'il mobilise pour créer des formations qui répondent aux besoins concrets des participants.
Il partage régulièrement ses connaissances à travers des articles publiés sur Smashing Magazine, sur son blog et via les cours en ligne NextPatterns et AstroPatterns.
Si vous passez par Montpellier, vous le croiserez sûrement au détour d'un meetup MontpellierJS ou Gen-AI !