Maison >interface Web >js tutoriel >Solution d'optimisation des performances de chargement non bloquante en compétences JavaScript_javascript
Les performances de Javascript dans le navigateur peuvent être considérées comme le problème d'utilisabilité le plus important auquel sont confrontés les développeurs front-end.
Parmi les règles Yslow 23 de Yahoo, l’une d’elles consiste à mettre JS en bas. La raison en est qu'en fait, la plupart des navigateurs utilisent un seul processus pour gérer plusieurs tâches telles que l'interface utilisateur et la mise à jour de Javascript, et qu'une seule tâche peut être exécutée à la fois. Combien de temps le Javascript est-il exécuté, puis combien de temps il attend avant que le navigateur ne devienne inactif pour répondre à l'interaction de l'utilisateur.
À un niveau de base, cela signifie que la présence de la balise <script> fait attendre la page entière que le script soit analysé et exécuté. Que le code JavaScript réel soit en ligne ou contenu dans un fichier externe non lié, le processus de téléchargement et d'analyse de la page doit s'arrêter et attendre que le script termine ce traitement avant de continuer. Il s'agit d'une partie essentielle du cycle de vie de la page, puisque les scripts peuvent modifier le contenu de la page lors de son exécution. Un exemple typique est la fonction document.write(), par exemple : <br>
</p>
<div class="codetitle">
<span><a style="CURSOR: pointer" data="5199" class="copybut" id="copybut5199" onclick="doCopy('code5199')"><u>Copier le code</u></a></span> Le code est le suivant :</div>
<div class="codebody" id="code5199">
<br>
<html><br>
<tête><br>
<title>Exemple de script</title><br>
</tête>
<br>
<corps><br>
<p><br>
<script type="text/javascript"><br>
document.write("La date est " (new Date()).toDateString());<br>
</p><br>
</corps>
</html><br>
<br><br>
Lorsque le navigateur rencontre une balise <script>, comme dans la page HTML ci-dessus, il n'y a aucun moyen de prédire si JavaScript ajoutera du contenu dans la balise <p> Par conséquent, le navigateur s'arrête, exécute ce code JavaScript, puis continue l'analyse et la traduction de la page. La même chose se produit lors du chargement de JavaScript à l'aide de l'attribut src. Le navigateur doit d'abord télécharger le code du fichier externe, ce qui prend un certain temps, puis analyser et exécuter le code. Au cours de ce processus, l'analyse des pages et l'interaction de l'utilisateur sont complètement bloquées. <br>
</div>Étant donné que les scripts bloquent le processus de téléchargement d'autres ressources de la page, l'approche recommandée consiste à placer toutes les balises <script> aussi près que possible du bas de la balise <body> page. Par exemple : <br>
<p><br></p>
<div class="codetitle">Copier le code<span><a style="CURSOR: pointer" data="96913" class="copybut" id="copybut96913" onclick="doCopy('code96913')"><u> Le code est le suivant :</u></a></span>
<html></div>
<tête><div class="codebody" id="code96913">
<title>Exemple de script</title><br>
<link rel="stylesheet" type="text/css" href="styles.css">
</tête><br>
<br>
<corps><br>
<p>Bonjour tout le monde !</p><br>
<-- Exemple de positionnement de script recommandé --->
<script type="text/javascript" src="file1.js"></script>