Ich verwende RequireJS und muss etwas auf DOM bereit initialisieren. Jetzt stellt RequireJS das domReady
Plugin zur Verfügung , aber wir haben bereits jQuery's $(document).ready()
, das mir zur Verfügung steht, da ich jQuery benötigt habe.
Ich habe also zwei Möglichkeiten:
Verwenden Sie das
domReady
Plugin:require(['domReady'], function (domReady) { domReady(function () { // Do my stuff here... }); });
Verwendung
$(document).ready()
:$(document).ready(function() { // Do my stuff here... });
Welches soll ich wählen und warum?
Beide Optionen scheinen wie erwartet zu funktionieren. Ich bin nicht zuversichtlich in die jQuery, weil RequireJS seine Magie tut; Das heißt, da RequireJS Skripte dynamisch hinzufügt, mache ich mir Sorgen, dass DOM-fähig sein könnte, bevor alle dynamisch angeforderten Skripte geladen werden. RequireJS wird zusätzliche JS nur dann belasten, domReady
wenn ich bereits jQuery benötigt habe.
Fragen
- Warum stellt RequireJS ein
domReady
Plugin zur Verfügung, wenn wir jQuery's haben können$(document).ready();
? Ich sehe keinen Vorteil darin, eine andere Abhängigkeit aufzunehmen. - Wenn es nur darum geht, einen Bedarf zu decken, warum nicht einen für Cross-Browser-AJAX bereitstellen?
Soweit ich weiß, wird ein Modul, das benötigt domReady
wird, nicht abgerufen oder ausgeführt, nachdem das Dokument fertig ist, und Sie können das Gleiche auch mit jQuery tun:
require(['jQuery'], function ($) {
$(document).ready(function () {
// Do my stuff here...
});
});
Um meine Frage klarer zu formulieren: Was ist der Unterschied zwischen dem Erfordernis domReady
oder jQuery
?
script
Tags gehen, oder schreiben Sie eine Bibliothek / ein Plug-In, die / das andere Benutzer verwenden (und damit die Position der script
Tags im Markup kontrollieren )?
I am not confident in jquery's dom ready because requirejs is doing its magic.
Da ist erforderlich, Kapselung in begrenztem lokalen Bereich zu kapseln. Das ist nicht der Punkt. (soweit es die Frage betrifft).
I am not confident in jquery's dom ready
Ich möchte es als anstößig markieren:p