Strukturierung eines Standard-Exportobjekts

9

Kann ich beim Import ein Standard-Exportobjekt destrukturieren?

Gegeben die folgende Syntax für den Export ( export default )

%Vor%

ist die folgende Importsyntax gültig JS?

%Vor%

Ich frage, weil es funktioniert auf meinem System, aber mir wurde gesagt, es sollte nicht nach der Spezifikation funktionieren.

    
sfletche 05.05.2017, 22:54
quelle

2 Antworten

15
  

Kann ich beim Import ein Standard-Exportobjekt destrukturieren?

Nein. Sie können ein Objekt nur destrukturieren, nachdem Sie es in eine Variable importiert haben.

Beachten Sie, dass Import / Export eine Syntax und Semantik aufweist, die sich vollständig von denen von Objektliteralen / Objektmustern unterscheidet. Die einzige Gemeinsamkeit ist, dass beide geschweifte Klammern verwenden und ihre Kurzdarstellungen (mit nur Bezeichnernamen und Kommas) nicht unterscheidbar sind.

  

Ist die folgende Importsyntax gültig JS?

%Vor%

Ja. Es importiert zwei benannte Exporte aus dem Modul. Es ist eine Kurzschreibweise für

%Vor%

was bedeutet "deklarieren Sie eine Bindung foo und lassen Sie die Variable referenzieren, die unter dem Namen foo von export-file exportiert wurde, und deklarieren Sie eine Bindung bar und lassen Sie sie auf die Variable verweisen, die unter dem exportiert wurde name bar von export-file ".

  

Gegeben die folgende Export-Syntax (Export-Standard)

%Vor%      

funktioniert der obige Import damit?

Nein. Es deklariert eine unsichtbare Variable, initialisiert sie mit dem Objekt { foo: foo, bar: bar } und exportiert sie unter dem Namen default .
Wenn dieses Modul als export-file importiert wird, wird der Name default nicht verwendet und die Namen foo und bar werden nicht gefunden, was zu einem SyntaxError führt.

Um dies zu beheben, müssen Sie entweder das standardmäßig exportierte Objekt importieren:

%Vor%

Oder Sie behalten Ihre Importsyntax und verwenden stattdessen benannte Exporte:

%Vor%     
Bergi 15.05.2017, 20:07
quelle
-2

Ihr Code entspricht:

%Vor%

Da mehrere Objekte exportiert werden, werden sie implizit vom Modulsystem in ein Objekt eingebunden. Die Exporte des Moduls sehen tatsächlich so aus:

%Vor%

So werden Module in js exportiert; in einem Objekt unabhängig von den mehreren Exportanweisungen.

Die Destrukturierung macht also Sinn, Sie demotivieren immer noch ein Objekt, wie Sie es normalerweise tun würden. Dies ist absolut gültig.

    
Rafael 05.05.2017 23:16
quelle

Tags und Links