1. Unterschiede zwischen den beiden ModulenEs gibt erhebliche Unterschiede zwischen ES6-Modulen und CommonJS-Modulen. In Bezug auf die Syntax werden CommonJS-Module mit require() geladen und mit module.exports exportiert, während ES6-Module Import und Export verwenden. In Bezug auf die Verwendung ist require() eine synchrone Ladung, und der nachfolgende Code muss warten, bis dieser Befehl ausgeführt wird, bevor er ausgeführt wird. Der Importbefehl wird asynchron geladen, oder genauer gesagt, das ES6-Modul verfügt über eine unabhängige statische Analysephase, die Abhängigkeitsanalyse wird in dieser Phase abgeschlossen und das Modul auf der niedrigsten Ebene wird zuerst ausgeführt. 2. Der Unterschied zwischen Node.jsNode.js erfordert, dass ES6-Module den Dateinamen mit der Erweiterung .mjs verwenden. Mit anderen Worten: Solange der Import- oder Exportbefehl in der Skriptdatei verwendet wird, muss das Suffix .mjs verwendet werden. Wenn Node.js auf eine MJS-Datei stößt, betrachtet es diese als ES6-Modul und aktiviert standardmäßig den strikten Modus. Sie müssen nicht am Anfang jeder Moduldatei „use strict“ angeben. Wenn Sie das Suffix nicht in .mjs ändern möchten, können Sie das Typfeld in der Datei package.json des Projekts als Modul angeben. { "Typ": "Modul" } Sobald sie festgelegt sind, werden die JS-Skripte in diesem Verzeichnis als ES6-Module interpretiert.
Wenn Sie derzeit noch CommonJS-Module verwenden möchten, müssen Sie das Suffix der CommonJS-Skripte in .cjs ändern. Wenn kein Typfeld vorhanden ist oder das Typfeld „CommonJS“ ist, wird das JS-Skript als CommonJS-Modul interpretiert. Um es in einem Satz zusammenzufassen: .mjs-Dateien werden immer als ES6-Module geladen, .cjs-Dateien werden immer als CommonJS-Module geladen und das Laden von .js-Dateien hängt von der Einstellung des Typfelds in package.json ab. Beachten Sie, dass ES6-Module und CommonJS-Module nicht gemischt werden sollten. Der Befehl require kann keine .mjs-Dateien laden und meldet einen Fehler. Nur der Befehl import kann .mjs-Dateien laden. Umgekehrt kann der Befehl „require“ nicht in .mjs-Dateien verwendet werden, und es muss „import“ verwendet werden. 3. CommonJS-Modul lädt ES6-ModulDer require()-Befehl von CommonJS kann ES6-Module nicht laden und meldet einen Fehler. Sie können sie nur mit der import()-Methode laden. (asynchron () => { warte auf Import('./my-app.mjs'); })(); Der obige Code kann in einem CommonJS-Modul ausgeführt werden. Ein Grund, warum require() ES6-Module nicht unterstützt, besteht darin, dass es synchron geladen wird und der Await-Befehl der obersten Ebene innerhalb von ES6-Modulen verwendet werden kann, was ein synchrones Laden unmöglich macht. 4. ES6-Module laden CommonJS-ModuleDer Importbefehl von ES6-Modulen kann CommonJS-Module laden, aber nur als Ganzes, nicht nur ein einzelnes Ausgabeelement. // Korrekter Import von packageMain aus „commonjs-package“; // Fehler beim Importieren { Methode } aus „commonjs-package“; Dies liegt daran, dass ES6-Module die statische Codeanalyse unterstützen müssen und die Ausgabeschnittstelle von CommonJS-Modulen module.exports ist, ein Objekt, das nicht statisch analysiert werden kann und daher nur als Ganzes geladen werden kann. Das Laden eines einzelnen Ausgabeelements kann wie folgt geschrieben werden. importiere packageMain aus „commonjs-package“; const { Methode } = PaketMain; 5. Module, die beide Formate unterstützenAußerdem ist es einfach, sowohl das CommonJS- als auch das ES6-Format für ein Modul zu unterstützen. Wenn das Originalmodul im ES6-Format vorliegt, muss eine allgemeine Ausgabeschnittstelle angegeben werden, z. B. „export default obj“, damit CommonJS es mit „import()“ laden kann. Wenn das Originalmodul im CommonJS-Format vorliegt, kann eine Wrapper-Ebene hinzugefügt werden. importiere cjsModule aus „../index.js“; : Exportieren Sie const foo = cjsModule.foo; Der obige Code importiert zuerst das CommonJS-Modul als Ganzes und gibt dann die benannte Schnittstelle nach Bedarf aus. Sie können die Dateierweiterung in .mjs ändern oder sie in ein Unterverzeichnis legen und in diesem Unterverzeichnis eine separate Datei package.json ablegen und dabei { type: "module" } angeben. Ein anderer Ansatz besteht darin, die Ladeeintrittspunkte der beiden Modulformate im Exportfeld der Datei package.json anzugeben. "Exporte": { "erfordern": "./index.js", "importieren": "./esm/wrapper.js" } Der obige Code gibt require() und import an, und beim Laden des Moduls wird automatisch zu einer anderen Eingabedatei gewechselt. Oben finden Sie eine ausführliche Erklärung, wie Node.js ES6-Module verarbeitet. Weitere Informationen dazu, wie Node.js ES6-Module verarbeitet, finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM! Das könnte Sie auch interessieren:
|
<<: Analyse des Konfigurationsprozesses der Nginx-HTTP-Integritätsprüfung
>>: Lösen Sie das Problem der blockierenden Positionierungs-DDL in MySQL 5.7
Der Installationsprozess entfällt (ich habe es di...
Inhaltsverzeichnis 1. Verwenden Sie Objekt, um ei...
Die konkrete Methode ist wie folgt: CSS Code Code...
Vorwort Während des Stresstests besteht das unmit...
Inhaltsverzeichnis Da Vuex einen einzelnen Zustan...
Code kopieren Der Code lautet wie folgt: <span...
Inhaltsverzeichnis 1. Browserunterstützung 2. Exp...
Ein statischer Knoten ist auf einer Maschine fixi...
Schritte: 1. MySQL-Datenbank installieren 1. Lade...
Inhaltsverzeichnis 1. JS-Objekt DOM –1, Funktion ...
Ich bin ein SQL-Anfänger und dachte, die Installa...
Die dekomprimierte Version von MySQL ist installi...
<br />Dieses Tutorial zur Erstellung von Web...
Nginx-Verkehrskontrolle Die Ratenbegrenzung ist e...
Wenn Sie ein Arbeitgeber fragt, ob in einer MySQL...