Heim >Web-Frontend >Front-End-Fragen und Antworten >Kann das es-Modul im Knoten ausgeführt werden?

Kann das es-Modul im Knoten ausgeführt werden?

WBOY
WBOYOriginal
2022-07-04 17:08:211761Durchsuche

es-Modul kann im Knoten ausgeführt werden; Knoten unterstützt das native es-Modul seit Version 8.5.2. Diese Funktion kann über die Befehlszeilenoption aktiviert werden. Das es-Modul, auch als ECMAScript-Modul bekannt, ist ein JavaScript-Code Wiederverwendungsmechanismus, der jedoch nicht in require() verwendet werden kann, wird im ES-Modul verwendet.

Kann das es-Modul im Knoten ausgeführt werden?

Die Betriebsumgebung dieses Artikels: Windows 10-System, NodeJS-Version 12.19.0, Dell G3-Computer.

Diese Module können im Knoten ausgeführt werden

Ab Version 8.5.0 beginnt Node.js mit der Unterstützung nativer ES-Module, und diese Funktion kann über Befehlszeilenoptionen aktiviert werden. Die neuen Features sind größtenteils Bradley Farias zu verdanken.

1. Demo

Die Codeverzeichnisstruktur dieses Beispiels ist wie folgt:

esm-demo/
 lib.mjs
 main.mjs

lib.mjs:

export function add(x, y) {
 return x + y;
}

main.mjs:

import {add} from './lib.mjs';
console.log('Result: '+add(2, 3));

Führen Sie die Demo aus:

$ node --experimental-modules main.mjs
Result: 5

2. Checkliste: Dinge, die Sie beachten sollten

ES-Modul:

·Sie können Module nicht dynamisch importieren. Die Arbeit an dynamischem import() ist jedoch im Gange und Unterstützung sollte bald verfügbar sein.

·Keine Metavariablen wie __dirname und __filename. Es gibt jedoch einen Vorschlag für eine ähnliche Funktion: „import.meta“. Es könnte so aussehen:

console.log(import.meta.url);

·Jetzt sind alle Modulkennungen URLs (dieser Teil ist neu in Node.js):

·Datei – mit relativem Dateipfad zur Erweiterung : ../util/tools.mjs

· Bibliothek – keine Dateierweiterung und kein Pfad-Lodash

· Wie man NPM-Bibliotheken besser auch in Browsern verfügbar machen kann (ohne Bundler zu verwenden), bleibt abzuwarten. Eine Möglichkeit besteht darin, Konfigurationsdaten im RequireJS-Stil einzuführen, die Pfade tatsächlichen Pfaden zuordnen. Derzeit ist es illegal, Bare-Path-Modul-IDs in Browsern zu verwenden.

Interoperabilität mit CJS-Modulen

Sie können CJS-Module importieren, diese verfügen jedoch immer nur über die Standardexporte – also den Wert von module.exports. Es wird bereits daran gearbeitet, dafür zu sorgen, dass CJS-Module benannte Exporte unterstützen, aber es kann eine Weile dauern. Wenn Sie helfen können, können Sie es tun.

import fs1 from 'fs';
console.log(Object.keys(fs1).length); // 86
import * as fs2 from 'fs';
console.log(Object.keys(fs2)); // ['default']

· Require() kann nicht in ES-Modulen verwendet werden. Die Hauptgründe sind:

· Die Pfadauflösung funktioniert etwas anders: ESM unterstützt NODE_PATH und require.extensions nicht. Auch die Tatsache, dass es sich bei der Kennung immer um eine URL handelt, führt zu geringfügigen Unterschieden.

· ES-Module werden immer asynchron geladen, was maximale Kompatibilität mit dem Web gewährleistet. Dieser Ladestil kann nicht mit dem synchronen Laden von CJS-Modulen über require() gemischt werden.

· Durch das Deaktivieren des synchronen Ladens von Modulen bleibt auch ein Fallback-Pfad für Warteimporte von ES-Modulen auf oberster Ebene übrig (eine Funktion, die derzeit in Betracht gezogen wird).

Empfohlenes Lernen: „nodejs-Video-Tutorial

Das obige ist der detaillierte Inhalt vonKann das es-Modul im Knoten ausgeführt werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:Was bedeutet Knotenliste?Nächster Artikel:Was bedeutet Knotenliste?