Ich benutze requireJS 2.x. Ich fand heraus, dass einige Tutorials (und die offiziellen Dokumente) manchmal verwenden
requirejs.config({ [...] });
requirejs(["module"]) ...
und manchmal
require.config({ [...] });
require(["module"]) ...
Gibt es einen Unterschied zwischen diesen beiden Funktionen (require und requirejs)? Ich konnte kein Wort darüber in den Dokumenten finden. :(
javascript
requirejs
require
Matthias Bayer
quelle
quelle
requirejs
da diesrequire
in dieser Situation bereits eine lokale Variable ist. Ich fand dies nützlich in React-Komponenten, um zusätzliche Skripte in zu ladencomponentDidMount
.Sind
requirejs
undrequire
das gleiche?Ab RequireJS 2.1.15
require
undrequirejs
im globalen Raum sind in der Tat "genau die gleichen", wie aus diesem Test hervorgeht, den Sie in der Konsole durchführen können:> require === requirejs true
Dass der Test zurückgibt,
true
sagt Ihnen, dass es sich um genau dasselbe Funktionsobjekt handelt . Es sind keine zwei Funktionen, die einen ähnlichen oder identischen Code haben. Sie sind das gleiche Objekt, Punkt.Beachten Sie jedoch , wenn Sie ausführen ,
define(['require'], function (require) {
dierequire
an die Funktion übergeben wird , ist normalerweise verschieden von der globalenrequire
.Sollten Sie verwenden
require
oderrequirejs
?Es hängt davon ab, ob. RequireJS ist ein AMD-Lader, aber nicht der einzige Lader in der Stadt. Wenn Sie Code schreiben möchten, der zu 100% der AMD-Spezifikation entspricht , damit jemand, der Ihren Code verwendet, jeden gewünschten Loader verwenden kann, ohne Ihren Code ändern zu müssen, sollten Sie ihn
require
auf globaler Ebene verwenden, da errequirejs
spezifisch für RequireJS ist. Ein anderer AMD-Lader definiert es nicht. Die AMD-Spezifikation definiertrequire
aber nichtrequirejs
.Wenn Sie etwas anderes laden, das eine globale Ebene definiert
require
, müssen Sie diese aufrequirejs
globaler Ebene verwenden, um Konflikte zu vermeiden.Verwenden Sie
define
in einem Modul immer , um einen Verweis auf zu erhaltenrequire
. Sie sollten dies ganz unabhängig davon tun, ob es einen Konflikt im globalen Raum gibt.quelle
OK, sie können tatsächlich "genau gleich" sein. Konzentrieren wir uns dann darauf, warum Sie eines gegen das andere verwenden würden ...
Unklar ist, was als "Best Practice" zu betrachten ist: Wenn requirejs zusätzliche Sicherheit bietet, "wenn in einigen Umgebungen möglicherweise bereits eine Anforderung besteht", wäre es nicht eine gute Idee, immer die Funktion requirejs zu verwenden, um eine erforderliche Konfiguration zu definieren als die erfordern Funktion?
Was passiert auch, wenn das Undenkbare passiert und in der fraglichen Umgebung nicht nur bereits ein "Erfordernis" definiert ist, sondern auch ein "Erfordernis" definiert ist? Bedeutet das, dass wir auch eine Anforderung haben sollten? Und so weiter...?
quelle
$
undjQuery
. Es geht nur darum, einen Fallback zu bieten und ein guter Bürger zu sein, falls eine Umgebung bereits genutzt wirdrequire
. Es ist sehr viel ein Randfall und es wird empfohlen, zu verwendenrequire
, aber nicht notwendig - github.com/amdjs/amdjs-api/blob/master/AMD.md#global-variables-Sie sind Same Open Website, die bereits geladen benötigen
Öffnen Sie dann die Chrome-Konsole
Geben Sie require in die Konsole ein und drücken Sie die Eingabetaste
Geben Sie requirejs in die Konsole ein und drücken Sie die Eingabetaste
Sie können feststellen, dass es sich um dieselbe Funktion mit unterschiedlichen Namen handelt
quelle