Antwort:
Sie sollten %code% verwenden.
Erklärung:
Beide Funktionen verhindern, dass die Datei im Bundle enthalten ist. Für Ihren Anwendungsfall werden Sie wahrscheinlich nicht %code% jQuery verwenden, es spielt also keine Rolle, welche Sie verwenden. Dies ist jedoch, was passiert:
browserify verwendet module-deps , um Ihren Code zu untersuchen und alle %code% -Anweisungen zu finden, und teilt dann Modul mit -dept, wo das gewünschte Modul zu finden ist.
Wenn sich die Datei im Bundle befindet, muss sie lediglich den Schlüssel dafür in der Modulzuordnung des Bundles bereitstellen.
Wenn Sie angegeben haben, dass die Datei %code% ist, nimmt browserify an, dass Sie meinen, dass sie in einem anderen Bundle enthalten ist, und stellt so einen Pfad zur Datei bereit, vorausgesetzt, dass diese ID von einem anderen Bundle aufgelöst wird. Es ist ein wenig zusätzliche Buchhaltung beteiligt, um dies zu tun.
Wenn Sie %code% die Datei angeben, stellt browserify %code% für Modul-Deps bereit und es wird definitiv ein Feuer ausgelöst, wenn Sie versuchen, das Paket zu verwenden, das diese Datei benötigt. Dieser Ansatz ist jedoch nicht mit dem Aufwand verbunden, den Dateipfad zu verfolgen (was wirklich vernachlässigbar wäre) und "verschwendet keine Zeit" in anderen Paketen zu suchen, bevor er explodiert.
Einige Beispiele:
Ich habe mit node-browserify / example / api experimentiert, um einige Bundles zu erstellen, und die folgenden Beispiele sind die Modul-Maps aus verschiedenen Tests, die für die Lesbarkeit etwas formatiert sind.
Vanille - lief so wie es im browserify Repo ist:
%Vor%
%code% (main.js) hängt von %code% ab, das ist %code%
%code% (foo.js) hängt von %code% ab, das ist %code%
%code% (bar.js) hat keine Abhängigkeiten
Markiert %code% als extern:
%Vor%
%code% (main.js) hängt von %code% ab, das ist %code%
%code% (foo.js) hängt von %code% ab, das in einem anderen Bündel mit %code% gekennzeichnet werden sollte
Markiert %code% zum Ausschließen:
%Vor%
%code% (main.js) hängt von %code% ab, das ist %code%
%code% (foo.js) hängt von %code% ab, was bei ZOMFG ist! Ich weiß nicht, wo es ist. Du brauchst ??! 1!
Der Ausschluss / externe Aufruf wurde entfernt und die Anforderung von %code% von %code% :
wurde entfernt
%Vor%
%code% (main.js) hängt von %code% ab, das ist %code%
%code% (foo.js) hat keine Abhängigkeiten, die Welt ist peachy. Ich frage mich, ob sie %code% mit anderen Mitteln geladen haben
___ tag123browserify ___ Browserify ist ein Tool, das Node.js-Module für einen Webbrowser packt.
___ qstnhdr ___ Was ist der Unterschied zwischen browserify external vs. exclude?
___ qstntxt ___
Ich benutze %code% und versuche, es zu vermeiden, Zeit zu verschwenden, einschließlich jQuery und anderen %code% -less-Dateien, die ich über CDN geladen habe.
Sollte ich %code% oder %code% verwenden? Was ist der Unterschied? Ihr Output schien identisch zu sein, und die Dokumente sind mir unklar:
Verhindern Sie stattdessen, dass die Datei in das aktuelle Paket geladen wird
aus einem anderen Bündel referenzieren.
Wenn die Datei ein Array ist, wird jedes Element in der Datei externalisiert.
Wenn die Datei ein anderes Paket ist, wird der Inhalt dieses Pakets gelesen und
Aus dem aktuellen Bündel ausgeschlossen, da das Bündel in der Datei gebündelt wird.
Verhindert, dass der Modulname oder die Datei in der Datei in der Ausgabe angezeigt wird
Bündel.
Wenn Ihr Code versucht, () diese Datei anzufordern, wird sie geworfen, es sei denn, Sie haben
bot einen anderen Mechanismus zum Laden.
Der erste Teil von @ Wills Antwort ist auch wichtig:
Für Ihren Anwendungsfall werden Sie jQuery wahrscheinlich nicht benötigen, es spielt also keine Rolle, welches Sie verwenden
Ich denke, dass das Beispiel des OPs verwirrend ist, um den Unterschied zwischen exclude und external zu stellen. Wenn jQuery im Code nie benötigt () - wird, dann werden keine Fragen gestellt: Es wird niemals von browserify geparst und muss sowieso mit anderen Mitteln geladen werden.
wollte nur darauf hinweisen, wie ich das auch verwirrend fand.
___ tag123nodejs ___ Node.js ist ein ereignisbasiertes, nicht blockierendes asynchrones I / O-Framework, das die Google V8-JavaScript-Engine und die libuv-Bibliothek verwendet. Es wird für die Entwicklung von Anwendungen verwendet, die die Fähigkeit zum Ausführen von JavaScript sowohl auf dem Client als auch auf der Serverseite stark ausnutzen und daher von der Wiederverwendbarkeit von Code und dem Mangel an Kontextwechsel profitieren.
___