8
votes

Les Javascripts sont-ils chargés de manière synchrone si on utilise document.write?

est-ce la même chose si vous chargez JavaScript sur la page comme ceci: xxx

et comme ceci xxx

J'ai beaucoup des dépendances en JS et souhaitez configurer ensuite en tant que tableau séparé, qui sont juste groupés dans index.html comme: xxx

la question est - devrait-il Travaillez comme prévu pour que le fichier suivant ne soit pas exécuté avant que le précédent soit chargé?

Il n'y a pas de côté serveur à l'avant que je fais et cela fonctionnera aussi parfois comme widget cependant Pour le développement et le test, nous devrions charger des fichiers non cédés et non compressés pour tester.

merci!


1 commentaires

Quelqu'un une fois posté une attente complète pour vous assurer que les scripts sont chargés dans un ordre spécifique ( Stackoverflow.com/Questtions/4832829/... ).


3 Réponses :


1
votes

Si vous cherchez à charger des scripts JavaScript asynchroneusement, dans le bon ordre, je vous recommanderai de $ script.js développé par Twitter JavaScript Levar Dev http://www.dustindiaz.com/scriptjs

C'est vraiment génial !!


3 commentaires

La chose drôle est que Twitter lui-même semble utiliser Lab.js :)


En effet. Ded a développé son propre script.js parce qu'il n'était pas pleinement satisfait par lab.js / peut-être dans une prochaine mise à jour du code Twitter ^^


Le code temporel nécessaire pour utiliser Certains de ces chargeuses de script devient assez convoluté rapidement. Certains sont également assez imposants dans la manière dont ils exigent que les scripts eux-mêmes soient conscients du cadre de chargement de script. "Fast" n'est pas la seule chose à craindre - La facilité d'utilisation est également très importante.



9
votes

Pour répondre à votre question: Oui, des scripts chargés avec document.write sont garantis pour exécuter dans l'ordre écrit.

même s'applique aux scripts chargés à l'aide des méthodes W3C DOM. xxx

qui dit, document.write () est généralement considéré comme une très mauvaise pratique (pour une variété de raisons) et peut conduire à des problèmes de rupture et de cas de bord gênant plus tard. Je vous recommande donc donc d'utiliser l'injection DOM W3C présentée ci-dessus, si rien d'autre.

- - - -
Ensuite, il existe des bibliothèques de chargement de script qui facilitent ce type de chargement de ressources, plus élégants et parfois encore plus rapides. Certains scripts de charge en parallèle mais exécutent dans une commande prévisible - comme celle déjà liée à @ cobalt2760 http: // www. dustindiaz.com/scriptjs

jQuery a également une méthode très simple $. Gauxcript ("chemin / à / script.js '); ( documentation ) que vous pouvez utiliser. Si la mémoire me sert à droite, il utilise une injection de Dom simple W3C.

Google "JavaScript Chargement" ou une autre, ou de la recherche ici sur Stackoverflow, Com si vous êtes intéressé par plus de liens vers de telles bibliothèques.


3 commentaires

Merci beaucoup pour l'aide étendue, je vois maintenant que cueillir une bibliothèque pour cela est la meilleure solution.


Comme tout le monde et à leur chat, j'ai bien entendu écrit mon propre chargeur de script: github.com/maranomynet/req Dans mon cas, la facilité d'utilisation a été la principale mise au point.


Cela ne semble pas être le cas avec des scripts en ligne par rapport à DOM Addition, tandis que document.write les exécute tous à son tour. Voir: Stackoverflow.com/Questtions/27895299/...



1
votes

si votre config.files.javascripts est une matrice, vous ne devez pas utiliser pour ... dans , comme cette syntaxe est destiné à la boucle sur des touches nommées dans des objets.

pour les tableaux utilisez un style C traditionnel pour la syntaxe de boucle: xxx

Donc, pour votre cas particulier, cela devrait faire le tour : xxx


0 commentaires