Placement du JavaScript : Head vs Footer – Avantages et Inconvénients

JavaScript dans le footer ou le header ? Quel impact sur les Core Web Vitals et lequel choisir ?

Arjen Karel Core Web Vitals Consultant
Arjen Karel - linkedin
Last update: 2024-11-27

Placement du JavaScript : Head vs Footer – Avantages et Inconvénients

Lors du développement de pages web, l'emplacement du code JavaScript peut avoir un impact significatif sur les performances de la page, la vitesse de chargement et la user experience (UX). Traditionnellement, il a été recommandé de placer le JavaScript dans le <head> de la page. C'est une valeur sûre, mais est-ce le bon choix ? Dans cet article, nous explorerons les différences entre le JavaScript dans le head et dans le footer de la page, en examinant les avantages et les inconvénients de chaque approche et les contextes dans lesquels elles sont les plus appropriées.

Contexte : le preload scanner

Le preload scanner est un second analyseur HTML qui scanne très rapidement l'intégralité du HTML de la page et récupère les ressources critiques comme les images, les fichiers CSS, les fichiers JavaScript et d'autres assets nécessaires au rendu correct de la page. Le preload scanner récupère généralement les ressources dans l'ordre où il les détecte sur la page. C'est là que l'emplacement du JavaScript entre en jeu : lorsque le JavaScript est placé dans le footer, il est détecté plus tard et son téléchargement est déclenché après les ressources situées au-dessus.

JavaScript dans le Head : 

Placer le code JavaScript dans la section <head> du document HTML présente certains avantages, notamment en ce qui concerne l'organisation du code et la séparation du balisage HTML. Voici les avantages et les inconvénients de l'utilisation de JavaScript dans le head :

Avantages :

  1. Séparation du code : Garder le code JavaScript dans le <head> permet une séparation claire entre la logique de script et le contenu HTML, rendant la base de code plus maintenable et lisible.
  2. Téléchargement anticipé : Le JavaScript dans le head est mis en file d'attente pour le téléchargement avant toutes les ressources du corps de la page (comme les images, les vidéos et les iframes).
  3. Exécution plus précoce : Les scripts mis en file d'attente pour le téléchargement sont généralement exécutés plus tôt que les scripts dans le footer. Le moment exact de l'exécution dépend de nombreux facteurs. Si cela vous intéresse, je vous suggère de lire Defer vs Async JavaScript et comment cela affecte les Core Web Vitals.

Inconvénients :

  1. Render Blocking : Lorsque le JavaScript est placé dans le <head> (sans l'attribut defer), il peut bloquer le rendu des éléments HTML, entraînant un retard dans l'affichage de la page jusqu'à ce que l'exécution du script soit terminée.
  2. Chargement de page plus lent : En raison du téléchargement anticipé, il entre en concurrence avec d'autres ressources importantes comme l'élément Largest Contentful Paint (LCP).

Quand devriez-vous placer le JavaScript dans le head ?

Scripts importants : Les scripts critiques pour le rendu ou l'expérience de la page doivent être placés dans le head de la page. Par exemple, les scripts qui gèrent votre menu, votre slider principal ou votre avis de cookies doivent être placés dans le head de la page.

Scripts de détection de fonctionnalités : Dans certains scénarios, des bibliothèques JavaScript comme Modernizr, utilisées pour la détection de fonctionnalités, peuvent être nécessaires dans le <head> pour détecter les capacités du navigateur tôt dans le cycle de vie de la page.

JavaScript dans le Footer : 

Placer le code JavaScript en bas de la page, juste avant la balise fermante </body>, est devenu une pratique largement utilisée. Cela mettra le script en file d'attente pour le téléchargement après les autres éléments du corps comme les images et les vidéos. Cela améliorera la vitesse de peinture au détriment de la fonctionnalité. Voici les avantages et les inconvénients de l'utilisation de JavaScript dans le footer :

Avantages :

  1. Chargement de page plus rapide : En plaçant le JavaScript à la fin de la page, le contenu HTML se charge en premier et le JavaScript s'exécute plus tard, résultant en un chargement initial de page plus rapide.
  2. Éviter les points de défaillance uniques (SPOF) : En chargeant le JavaScript en dernier, les chances de rencontrer des SPOF sont réduites, garantissant que le reste du contenu de la page est visible même si le JavaScript échoue à se charger ou à s'exécuter.

Inconvénients :

  1. Exécution tardive : Le JavaScript dans le footer peut entraîner une exécution retardée de certains scripts, affectant les fonctionnalités qui dépendent d'un accès précoce au JavaScript.

Quand devriez-vous placer le JavaScript dans le footer ?

Code moins critique : Pour les scripts qui n'affectent pas le rendu de la page ou les fonctionnalités qui ne sont pas requises immédiatement lors du chargement de la page, les placer dans le footer peut mener à une meilleure performance globale.

Bonnes pratiques et recommandations : 

En considérant les différents aspects du placement du JavaScript dans le head et le footer, voici quelques bonnes pratiques et recommandations :

  1. Scripts critiques pour le rendu : Les scripts qui impactent le contenu principal de la page doivent être chargés en render blocking dans le head de la page. Essayez d'éviter ces types de scripts car ils peuvent avoir un impact énorme sur les Core Web Vitals et le PageSpeed.

  2. Scripts critiques : Les scripts importants pour la conversion ou l'interaction de la page doivent être placés async ou defer dans le head de la page.

  3. Scripts normaux : À moins qu'ils n'impactent la mise en page ou ne nécessitent un accès précoce, placez les scripts réguliers dans le footer pour améliorer la vitesse de chargement de la page.

  4. Scripts "Nice-to-have" : Les scripts dont vous pourriez vous passer si c'était absolument nécessaire devraient être injectés une fois que le navigateur est inactif (idle).

  5. Écoutez les événements. L'événement DOMContentLoaded ou load peut garantir que le JavaScript s'exécute à ou après ces événements de timing, quel que soit son emplacement.

La décision de placer le JavaScript dans le head ou le footer d'une page web doit être basée sur les exigences spécifiques du site web et les fonctionnalités des scripts impliqués. Placer le JavaScript dans le head offre une séparation du code et des avantages d'accès précoce, mais peut entraîner un blocage du rendu et un chargement de page plus lent. Inversement, le JavaScript dans le footer offre des temps de chargement de page plus rapides et minimise les risques de SPOF, mais peut entraîner une exécution retardée pour certaines fonctionnalités. En tant que développeurs web, il est essentiel de comprendre les compromis et de prendre des décisions éclairées pour optimiser la user experience (UX) et la performance globale du site web.

Exemple 1 : JavaScript dans le Head



    Exemple de JavaScript dans le Head
        <script src="script.js">


    Cliquez-moi


Dans cet exemple, la fonction JavaScript showMessage() est placée dans la section <head> du document HTML. La fonction est appelée lorsque le bouton est cliqué, affichant une alerte. Cependant, le body ne sera pas analysé avant que le fichier 'script.js' n'ait été chargé et exécuté.

Exemple 2 : JavaScript dans le Footer

Dans cet exemple, la même fonction JavaScript showMessage() est placée en bas de la section <body>, juste avant la balise fermante </body>. Placer le JavaScript dans le footer permet au contenu HTML de se charger en premier, et le code JavaScript s'exécutera lorsque le bouton sera cliqué. En conséquence, l'alerte apparaît sans délai notable, offrant une expérience utilisateur plus fluide, et ce script n'est pas impacté par le fichier 'script.js' puisque celui-ci sera téléchargé en arrière-plan.

Exemple 3 : Utilisation des écouteurs d'événements (Event Listeners)



    Exemple d'écouteur d'événement
    


    


Dans cet exemple, l'écouteur d'événement load avec une fonction de rappel est utilisé pour garantir que le code JavaScript à l'intérieur de la fonction n'est exécuté qu'après le chargement complet de la page, qu'il soit placé dans le head ou le footer. Cette approche garantit que le code n'est pas exécuté tant que tous les éléments de la page ne sont pas prêts, offrant un comportement fiable et cohérent.

Ces exemples démontrent la différence de comportement entre le JavaScript placé dans le head et dans le footer. Placer le JavaScript dans le footer peut conduire à un chargement de page plus rapide et une expérience utilisateur plus fluide, en particulier lorsqu'il s'agit de scripts plus volumineux ou de fonctionnalités ne nécessitant pas une exécution immédiate. Cependant, certains scénarios, comme la détection de fonctionnalités ou l'utilisation de bibliothèques spécifiques, peuvent nécessiter que le JavaScript soit placé dans le head. Tenez toujours compte des exigences spécifiques de votre page web et choisissez l'emplacement approprié du JavaScript en conséquence.

Lab data is not enough.

I analyze your field data to find the edge cases failing your user experience.

Analyze My Data >>

  • Real User Data
  • Edge Case Detection
  • UX Focused
Placement du JavaScript : Head vs Footer – Avantages et InconvénientsCore Web Vitals Placement du JavaScript : Head vs Footer – Avantages et Inconvénients