Ich versuche festzustellen, ob es große Unterschiede zwischen diesen beiden gibt, abgesehen davon, dass ich mit export default
nur importieren kann :
import myItem from 'myItem';
Und mit export const
kann ich tun:
import { myItem } from 'myItem';
Ich frage mich, ob es andere Unterschiede und / oder Anwendungsfälle gibt.
javascript
ecmascript-6
es6-modules
ajmajmajma
quelle
quelle
const
wird der Bezeichner schreibgeschützt. Bei primitiven Werten können Sie dies als unveränderlich betrachten. Beachten Sie, dass der Wert selbst nicht unveränderlich ist, sodass Objekte, Arrays usw. geändert werden können - nur nicht neu zugewiesen.const
.Antworten:
Es ist ein benannter Export gegenüber einem Standardexport.
export const
ist ein benannter Export, der eine oder mehrere const-Deklarationen exportiert.Hervorheben: Hier kommt es auf das
export
Schlüsselwortconst
an, mit dem eine oder mehrere const-Deklarationen deklariert werden.export
kann auch auf andere Deklarationen wie Klassen- oder Funktionsdeklarationen angewendet werden.Standardexport (
export default
)Sie können einen Standardexport pro Datei durchführen. Beim Importieren müssen Sie einen Namen angeben und wie folgt importieren:
Sie können diesem Namen einen beliebigen Namen geben.
Benannter Export (
export
)Bei benannten Exporten können Sie mehrere benannte Exporte pro Datei haben. Importieren Sie dann die gewünschten Exporte in geschweifte Klammern:
Oder es ist möglich, einen Standard zusammen mit benannten Importen in derselben Anweisung zu verwenden:
Namespace-Import
Es ist auch möglich, alles aus der Datei auf ein Objekt zu importieren:
Anmerkungen
Ein Standardexport ist eigentlich ein benannter Export mit dem Namen,
default
sodass Sie ihn mit einem benannten Import importieren können:quelle
export default
Beeinflusst die Syntax beim Importieren des exportierten "Dings", beim Importieren von allem, was exportiert wurde, indem der Nameimport
selbst ausgewählt wird, unabhängig davon, wie der Name beim Export war, einfach weil er als "Standard" markiert ist.Ein nützlicher Anwendungsfall, den ich mag (und verwende), besteht darin, eine anonyme Funktion zu exportieren, ohne sie explizit benennen zu müssen. Nur wenn diese Funktion importiert wird, muss ihr ein Name gegeben werden:
Beispiel:
Exportieren Sie 2 Funktionen, eine davon ist
default
:Importieren Sie die oben genannten Funktionen. Einen Namen für den
default
einen erfinden:Wenn die
{}
Syntax zum Importieren einer Funktion (oder Variablen) verwendet wird, bedeutet dies, dass alles, was importiert wurde, bereits beim Export benannt wurde. Daher muss es mit genau demselben Namen importiert werden, da sonst der Import sonst nicht funktioniert.Fehlerhafte Beispiele:
Die Standardfunktion muss zuerst importiert werden
divide_1
wurde nicht exportiertmodule_1.js
, daher wird nichts importiertsquare
wurde nicht exportiertmodule_1.js
, da{}
die Engine angewiesen wird, explizit nur nach benannten Exporten zu suchen .quelle
import something from
anstelle vonimport { somethingNamed } from
.Kleiner Hinweis: Bitte beachten Sie, dass beim Importieren aus einem Standardexport die Benennung völlig unabhängig ist. Dies wirkt sich tatsächlich auf Refactorings aus.
Angenommen, Sie haben eine Klasse
Foo
wie diese mit einem entsprechenden Import:Wenn Sie nun Ihre
Foo
Klasse umgestaltenBar
und die Datei auch umbenennen, berühren die meisten IDEs Ihren Import NICHT. Am Ende haben Sie also Folgendes:Besonders in Typescript schätze ich benannte Exporte und das zuverlässigere Refactoring sehr. Der Unterschied ist nur das Fehlen des
default
Schlüsselworts und der geschweiften Klammern. Dies verhindert übrigens auch, dass Sie bei Ihrem Import einen Tippfehler machen, da Sie jetzt eine Typprüfung haben.quelle
import { Foo as Anything } from …
wieimport Anything from …
mit Standardexporten.as
ist wirklich nicht der Punkt in diesem Quellkommentar. Vielen Dank für die Ablehnung; pexport default
das Hauptobjekt eines Projekts exportieren, insbesondere aus einem npm-Paket (es ersetzt amodule.exports =
). Intern in einem Projekt ist es jedoch besser, nur benannte Exporte zu verwenden.Aus der Dokumentation :
quelle
Wenn Sie Standard festlegen, wird dies als Standardexport bezeichnet. Sie können nur einen Standardexport pro Datei durchführen und ihn in eine andere Datei mit einem beliebigen Namen importieren. Wenn Sie die Standardeinstellung "Name Export" nicht festlegen, müssen Sie sie in eine andere Datei mit demselben Namen und geschweiften Klammern importieren.
quelle
Ich hatte das Problem, dass der Browser es6 nicht verwendet.
Ich habe es behoben mit:
Das Typmodul weist den Browser an, ES6 zu verwenden.
Dann sollte es funktionieren.
quelle