Introduction
Lorsqu’il s’agit de créer des sites Web prêts pour la production, JavaScript est un élément essentiel. Il donne vie aux sites Web en ajoutant l’interactivité, le dynamisme et une expérience conviviale. Que vous cherchiez à implémenter le suivi de l’emplacement en temps réel pour une application de livraison de nourriture ou à suivre le trafic utilisateur avec un graphique à barres sur un tableau de bord d’administration, JavaScript est la clé pour rendre ces fonctionnalités possibles.
Mais vous êtes-vous déjà demandé comment ces fonctionnalités sont chargées dans notre application? Ces fonctionnalités sont chargées à l’aide du étiqueter. Les scripts sont chargés pour assurer des performances optimales pour votre site Web ou votre application. La façon dont le script est chargé peut avoir un impact significatif sur les temps de chargement des pages et l’expérience utilisateur globale.
Il existe deux méthodes principales pour charger un script: asynchrone et reporter. Les deux techniques permettent aux scripts de s’exécuter sans bloquer d’autres processus importants, comme le chargement du contenu ou le rendu de page. Dans ce blog, nous plongerons dans ces deux approches et explorerons comment ils peuvent aider à améliorer votre Performance du site Web.
Mayage par défaut de charger un script
Commençons par comprendre comment les scripts sont chargés par défaut, sans utiliser les attributs asynchronisés ou différés. Lors de la liaison d’un script externe à un fichier HTML, nous utilisons généralement le tag, qui peut être placé soit à l’intérieur du ou le .
Par défaut, lorsque ni l’attribut async ni de report n’est utilisé, le script est téléchargé et exécuté Tout de suite, bloquant le processus d’analyse HTML jusqu’à ce que le script ait terminé le chargement et l’exécution. Jetons un coup d’œil à un exemple pour mieux comprendre ce comportement: Comportement par défaut Décomposons ce qui se passe dans le code. Imaginez que vous intégrez l’API Google Maps dans une application HTML. Vous incluez le script Google Maps dans une balise , et il y a aussi une balise sœur avec du texte. Maintenant, voyons comment le navigateur gère cela dans le cas par défaut: Comme nous l’avons vu dans le cas par défaut, le processus d’analyse HTML a été bloqué car le navigateur a dû attendre le téléchargement et l’exécution du script, ce qui a entraîné un rendu plus lent de l’application. Cependant, il existe une meilleure façon de gérer cela. En ajoutant le attribut asynchrone Pour la balise , nous pouvons améliorer ce processus. Lorsqu’un script est inclus avec l’attribut asynchronisé, il demande au navigateur de télécharger le script de manière asynchrone tout en analysant le document HTML. Cela signifie que le script est récupéré en arrière-plan, sans interrompre ni bloquer l’analyse HTML, conduisant à un rendu de page plus rapide. Imaginez que vous êtes dans un service de restauration rapide. Pendant que votre nourriture est en cours de préparation, le Drive-Thru continue de servir d’autres clients. Une fois que votre nourriture est prête, vous la ramassez et chosez. Tout se passe indépendamment et rapidement. En programmation, Async permet aux tâches de fonctionner en même temps, sans attendre que les autres se terminent. Chaque tâche est effectuée dès qu’elle est prête. Revoyons le même exemple du cas par défaut pour mieux comprendre ce comportement par rapport au code: Comportement asynchrone Décomposons ce qui se passe lorsque nous ajoutons l’attribut asynchrone à la balise dans l’exemple ci-dessus. Voici comment le navigateur gère cela dans le cas asynchrone: Remarque: Cependant, comme les scripts asynchrones ne bloquent pas l’analyse et peuvent être exécutés à tout moment, rien ne garantit qu’ils exécuteront dans l’ordre dans lequel ils apparaissent dans le HTML. L’attribut de report offre une autre solution pour gérer le chargement des scripts plus efficacement. Lorsque nous utilisons l’attribut Defer dans une balise , il permet au navigateur de télécharger le script de manière asynchrone tout en analysant le document HTML. Cependant, contrairement à l’attribut asynchrone, l’exécution du script est retardée jusqu’à ce que l’ensemble du document HTML ait été entièrement analysé. Cela garantit que le script ne bloque pas le processus de rendu de la page, tout en exécutant dans l’ordre correct après le chargement du contenu HTML. Maintenant, imaginez un restaurant assis où les cours sont servis dans l’ordre: apéritif d’abord, puis principal plat et enfin dessert. Vous attendez le bon moment avant que chaque cours n’arrive. En programmation, reportez-vous les tâches de retard jusqu’à ce que le HTML soit complètement chargé, garantissant qu’ils s’exécutent dans le bon ordre sans bloquer le rendu de la page. Revoyons le même exemple du cas par défaut pour mieux comprendre ce comportement par rapport au code: Comportement de différence Décomposons ce qui se passe lorsque nous ajoutons l’attribut de report à la balise dans l’exemple ci-dessus. Voici comment le navigateur gère cela dans le cas différé: Remarque: L’attribut de différence conserve l’ordre de l’exécution du script en fonction de leur position dans le HTML, ce qui le rend idéal pour les scripts qui dépendent les uns des autres ou qui nécessitent que le Dom soit entièrement analysé avant l’exécution. Asynchrone: Considérons certains scénarios où l’utilisation asynchrone est bénéfique: Reporter: Considérons certains scénarios où l’utilisation reporter est bénéfique: Async et Defer permettent à l’analyse HTML de continuer sans attendre le téléchargement du script, améliorant la vitesse de chargement de la page. La différence clé est lorsque le script s’exécute. Avec Async, le script s’exécute dès qu’il est téléchargé, potentiellement avant que le HTML ne soit entièrement analysé. Ceci est idéal pour les scripts indépendants qui ne reposent pas sur le DOM. En revanche, Defer garantit que le script s’exécute uniquement après l’analyse du HTML, mais avant l’événement DomContent. Utilisez Async pour les scripts qui peuvent s’exécuter indépendamment et différer pour les scripts qui ont besoin du DOM ou qui nécessitent l’ordre d’exécution. Vous avez trouvé cela utile? PARTAGEZ-LE<!----============Code============---->
<p>content before script...</p>
<script src="https://maps.googleapis.com/maps/api/js?key=YOUR_KEY&callback=myMap"></script>
<p>content after script...</p>
Façon asynchrone de charger un script
Utilisons une analogie simple pour expliquer la programmation asynchrone
<!----============Code============---->
<p>content before script...</p>
<script src="https://maps.googleapis.com/maps/api/js?key=YOUR_KEY&callback=myMap" async></script>
<p>content after script...</p>
Différer la façon de charger un script
Utilisons une analogie simple pour expliquer la programmation asynchrone
<!----============Code============---->
<p>content before script...</p>
<script src="https://maps.googleapis.com/maps/api/js?key=YOUR_KEY&callback=myMap" defer></script>
<p>content after script...</p>
Quand utiliser l’async et quand utiliser un report?
Nous utiliserons la méthode d’attribut async lorsque nous voulons charger les scripts simultanément sans bloquer l’analyse et le rendu HTML.
Nous utiliserons la méthode d’attribut de différence lorsque nous voulons permettre aux scripts de charger de manière asynchrone, mais garantit qu’ils ne sont exécutés qu’une fois l’analyse HTML terminée, les empêchant de bloquer le processus de rendu.
Conclusion
Source link