2017-06-26 3 views
1

Was bedeutet das + Symbol in dieser Import-Deklaration?ES6 Import-Deklaration + Symbol

import app from '+/api';

im Gegensatz zu nur:

import app from '/api';

Der Import Schnipsel ist von einem Knoten app ES6, die mit Babel transpiled wird.

./api/index.js exportiert eine Express-Instanz mit export default app;

Ich habe auch diese Syntax gesehen, eine Tilde verwendet:

import app from '~/api';

+3

Wenn die App webpack oder browserify oder einen anderen Modulbündler verwendet, müssen Sie sich die Konfigurationsdatei oder Dokumentation ansehen. Diese Symbole haben in ECMAScript oder Node keine Bedeutung. –

Antwort

5

Die Struktur des Modul-Identifikators oder wie es interpretiert werden soll ist not part of the ECMAScript specification. Die Bedeutung der Modulkennung wird durch den Modullader definiert, d. H. Der Teil des Systems, der den Wert tatsächlich annimmt und ihn verwendet, um das entsprechende Modul zu finden.

Natürlich hat Node.js einen Modullader. Es ist Node.js, dass defines that module identifiers are either names of shared modules or paths to files.

Allerdings hat die + (oder ~) hier keine Bedeutung in Node.js. Ich kann nur annehmen, dass das Projekt einen Modulbündler oder etwas Ähnliches verwendet, das Moduldateien und ihre Abhängigkeiten verarbeitet. Es ist dieser Teil des Systems, der die Bedeutung von + definiert.


Ich denke, dies ist ein Punkt ist, dass viele Menschen nicht verstehen: Während ES6 eine Standardsyntax für erklären Abhängigkeiten definiert, die Auflösung des Modul-Identifikator des eigentlichen Modul ist nicht Teil der Spezifikation und kann zwischen Laufzeiten/Umgebungen sehr unterschiedlich sein. Angesichts der Beliebtheit von Node.js werden die meisten wahrscheinlich kompatibel sein mit dem CommonJS module system (was Node verwendet), aber wiederum gibt es keinen Standard dafür.