J'utilise RequireJS et j'ai besoin d'initialiser quelque chose sur DOM prêt. Maintenant, RequireJS fournit le domReadyplugin , mais nous avons déjà jQuery $(document).ready(), qui m'est disponible puisque j'ai besoin de jQuery.
J'ai donc deux options:
Utilisez le
domReadyplugin:require(['domReady'], function (domReady) { domReady(function () { // Do my stuff here... }); });Utilisez
$(document).ready():$(document).ready(function() { // Do my stuff here... });
Lequel devrais-je choisir et pourquoi?
Les deux options semblent fonctionner comme prévu. Je n'ai pas confiance en celui de jQuery car RequireJS fait sa magie; c'est-à-dire que RequireJS ajoutera dynamiquement des scripts, je crains que DOM ready ne se produise avant que tous les scripts demandés dynamiquement ne soient chargés. Considérant que, RequireJS ajoutera une charge sur JS supplémentaire juste pour domReadyquand jQuery est déjà requis.
Des questions
- Pourquoi RequireJS fournit-il un
domReadyplugin alors que nous pouvons avoir jQuery$(document).ready();? Je ne vois aucun avantage à inclure une autre dépendance. - Si c'est juste pour répondre à un besoin, pourquoi ne pas en fournir un pour AJAX inter-navigateur?
Pour autant que je sache, un module qui nécessite domReadyne sera pas récupéré ou exécuté une fois le document prêt, et vous pouvez faire la même chose en demandant jQuery:
require(['jQuery'], function ($) {
$(document).ready(function () {
// Do my stuff here...
});
});
Pour être plus clair sur ma question: quelle est la différence entre exiger domReadyou jQuery?
scriptvont vos balises, ou écrivez-vous une bibliothèque / un plug-in que d'autres personnes utiliseront (et qui contrôlent donc l'emplacement des scriptbalises dans le balisage)?
I am not confident in jquery's dom ready because requirejs is doing its magic.Depuis, require encapsule jquery dans une portée locale limitée. Ce n'est pas la question. (en ce qui concerne la question).
I am not confident in jquery's dom readyJe veux le marquer comme offensif:p