Gibt es Leistungsvorteile bei der Verwendung übereinander?
Die aktuelle Antwort lautet "Nein", da keine der aktuellen Browser-Engines import/export
den ES6-Standard implementiert .
Einige Vergleichstabellen http://kangax.github.io/compat-table/es6/ berücksichtigen dies nicht. Wenn Sie also fast alle Grüns für Chrome sehen, seien Sie vorsichtig. import
Schlüsselwort von ES6 wurde nicht berücksichtigt.
Mit anderen Worten, aktuelle Browser-Engines einschließlich V8 können keine neue JavaScript-Datei aus der JavaScript-Hauptdatei über eine JavaScript-Direktive importieren .
(Möglicherweise sind wir nur noch wenige Fehler oder Jahre entfernt, bis V8 dies gemäß der ES6-Spezifikation implementiert.)
Dieses Dokument ist das, was wir brauchen, und dieses Dokument ist das, was wir befolgen müssen.
Und der ES6-Standard sagte, dass die Modulabhängigkeiten vorhanden sein sollten, bevor wir das Modul lesen, wie in der Programmiersprache C, in der wir (Header-) .h
Dateien hatten.
Dies ist eine gute und gut getestete Struktur, und ich bin sicher, dass die Experten, die den ES6-Standard erstellt haben, dies berücksichtigt haben.
Dies ist , was Webpack oder anderes Paket Bündler ermöglicht das Bündel in einigen zu optimieren Sonderfällen und reduzieren einige Abhängigkeiten von dem Bündel , die nicht benötigt werden. Aber in Fällen, in denen wir perfekte Abhängigkeiten haben, wird dies niemals passieren.
Es wird einige Zeit import/export
dauern, bis der native Support online geht, und das require
Keyword wird lange Zeit nirgendwo hingehen.
Was ist require
?
Auf diese node.js
Weise können Module geladen werden. ( https://github.com/nodejs/node )
Der Knoten verwendet Methoden auf Systemebene, um Dateien zu lesen. Darauf verlassen Sie sich bei der Verwendung grundsätzlich require
. require
endet in einem Systemaufruf wie uv_fs_open
(abhängig vom Endsystem, Linux, Mac, Windows) zum Laden der JavaScript-Datei / des JavaScript-Moduls.
Um zu überprüfen, ob dies der Fall ist, versuchen Sie, Babel.js zu verwenden, und Sie werden sehen, dass das import
Schlüsselwort in konvertiert wird require
.
node --experimental-modules index.mjs
import
Ermöglicht die Verwendung ohne Babel und funktioniert in Node 8.5.0+. Sie können (und sollten) Ihre npm-Pakete auch als natives ESModule veröffentlichen , mit Abwärtskompatibilität für den altenrequire
Weg.