Maison > interface Web > js tutoriel > Façons efficaces d'utiliser la balise

ffective Ways to Use the <script> Balise en HTML pour un meilleur développement Web

Le placement des balises <script> dans un document HTML a un impact significatif sur le temps d'exécution de JavaScript par rapport au rendu du contenu HTML. Ce guide explore quatre approches clés, détaillant leurs processus d'exécution et leurs cas d'utilisation optimaux.

1. <script>Tag dans <head>

<code class="language-html"><head>
  <script>
    // JavaScript code here
  </script>
  <title>Script in Head</title>
</head>
<h1>Hello, World!</h1></code>
Copier après la connexion
Copier après la connexion

Processus d'exécution :

  1. Le navigateur analyse le document HTML de haut en bas.
  2. Lorsque vous rencontrez la balise <script> dans <head>, le rendu HTML s'interrompt pendant le téléchargement et l'exécution du script.
  3. Après l'exécution du script, le navigateur reprend le traitement HTML.

Inconvénients :

  • Les scripts volumineux ou à chargement lent peuvent retarder le rendu des pages, entraînant un écran vide.
  • Tenter de manipuler des éléments DOM dans ce script peut échouer car les éléments ne sont pas encore chargés.

Cas d'utilisation idéaux :

  • Scripts contenant des fonctions non immédiatement requises, telles que des analyses ou du code de configuration.

2. <script> Balise à la fin de <body>

<code class="language-html"><title>Script at Bottom</title>
<h1>Hello, World!</h1>
<script>
  // JavaScript code here
</script></code>
Copier après la connexion

Processus d'exécution :

  1. Le navigateur charge et restitue l'intégralité du contenu HTML.
  2. La balise <script> à la fin du <body> est traitée et exécutée après le rendu de la page.

Avantages :

  • Garantit un chargement HTML complet avant l'exécution du script.
  • Empêche les retards de rendu et améliore l'expérience utilisateur.
  • Les éléments DOM sont facilement disponibles pour la manipulation.

Inconvénients :

  • Temps de chargement des pages légèrement augmenté car l'exécution de JavaScript se produit après le rendu HTML complet.

Cas d'utilisation idéaux :

  • Scripts interagissant avec le contenu de la page (par exemple, écouteurs d'événements, modifications d'éléments).

3. <script>Tag avec async Attribut

<code class="language-html"><head>
  <script async src="script.js"></script>
  <title>Script with Async</title>
</head>
<h1>Hello, World!</h1></code>
Copier après la connexion

Processus d'exécution :

  1. Le navigateur charge le HTML de manière séquentielle.
  2. Lorsqu'il rencontre le script async, il télécharge le script simultanément tout en poursuivant le chargement HTML.
  3. Une fois téléchargé, le script s'exécute immédiatement, interrompant brièvement le rendu, puis reprenant le chargement HTML.

Avantages :

  • Non bloquant : le chargement du script s'effectue en arrière-plan sans retarder le rendu de la page.
  • Chargement de page plus rapide grâce au téléchargement parallèle.

Inconvénients :

  • Les scripts peuvent s'exécuter dans un ordre imprévisible si plusieurs async scripts sont présents.
  • Les scripts reposant sur la structure HTML peuvent s'exécuter prématurément, provoquant des erreurs.

Cas d'utilisation idéaux :

  • Scripts indépendants tels que des analyses, des publicités ou des widgets de réseaux sociaux qui ne dépendent pas d'autres scripts ou éléments HTML.

4. <script>Tag avec defer Attribut

<code class="language-html"><head>
  <script>
    // JavaScript code here
  </script>
  <title>Script in Head</title>
</head>
<h1>Hello, World!</h1></code>
Copier après la connexion
Copier après la connexion

Processus d'exécution :

  1. Le navigateur charge le HTML de manière séquentielle.
  2. Le script defer est téléchargé en même temps que le HTML mais ne s'exécute qu'une fois l'intégralité du code HTML analysé.
  3. L'exécution a lieu juste avant l'événement DOMContentLoaded.

Avantages :

  • Assure l'exécution du script après le chargement complet de la page.
  • Maintient l'ordre d'exécution des scripts si plusieurs defer scripts sont utilisés.
  • Convient aux scripts dépendant d'un DOM entièrement disponible.

Cas d'utilisation idéaux :

  • Scripts manipulant le DOM une fois qu'il est complètement chargé.

Tableau de comparaison

Méthode Durée d'exécution Rendu des blocs Meilleur cas d'utilisation ête>
Method Execution Time Blocks Rendering Best Use Case
<script> in <head> Before HTML load Yes Configuration, early execution logic
<script> at end of <body> After HTML load No DOM manipulation, event handling
<script async> When script is downloaded No (except during execution) Analytics, ads, independent scripts
<script defer> After HTML parse No DOM-dependent scripts
dans

Avant le chargement HTML Oui Configuration, logique d'exécution anticipée à la fin du Après le chargement HTML Non Manipulation du DOM, gestion des événements Quand le script est téléchargé Non (sauf lors de l'exécution) Analyses, annonces, scripts indépendants <script différé> Après l'analyse HTML Non Scripts dépendants du DOM
  • Conclusion : meilleures pratiques<script><body>
  • Utilisez <script async> à la fin de
  • pour les scripts interagissant avec le contenu de la page et nécessitant un DOM entièrement chargé.
  • <body>Utilisez
  • pour les scripts indépendants tels que les analyses et les publicités.
  • <head>Placez les scripts au bas du async si aucun attribut n'est utilisé pour un chargement fluide de la page.defer
  • Évitez de placer des scripts dans
sans

ou <script> sauf si cela est absolument nécessaire pour éviter un blocage du rendu.

La Maîtrise de l'utilisation des balises est cruciale pour l'optimisation des applications Web. Le choix entre des scripts en ligne, internes, externes, asynchrones ou différés permet d'améliorer les performances, la maintenabilité du code et une expérience utilisateur supérieure.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal