2017-03-02 3 views
-1

Wie der folgende Code zeigt, warum funktioniert der Import Parent von 'Parent1.js nicht? Warum importiert snippet2 A korrekt, aber snippet1 nicht?Was ist der Grund für dieses seltsame Verhalten von `import * as A` und` import A`?

In meinem Verständnis Ausfuhren sollten module.exports gleich sein, so snippet1 sollte funktionieren ...

snippet1:

// Parent1.js 
    var a = exports.a = 1; 

//index.js 
    import Parent from 'Parent1.js' // Not working 
    import * as Parent from 'Parent1.js' // Worked! 

snippets2:

// Parent1.js 
    module.exports = {a:1} 

//index.js 
    import Parent from 'Parent1.js' // Worked 
+0

Was meinen Sie mit "gearbeitet" und "nicht arbeiten"? Welche Fehlermeldungen oder unerwartetes Verhalten haben Sie beobachtet? – skrrgwasme

+0

@skrrgwasme Bedeutet, ob das Aufrufen von 'Parent.a' aufgerufen wird Parent ist nicht definiert Fehler – Blake

+0

Sie sind identisch, es sei denn, Sie haben zirkuläre Abhängigkeiten. Das Problem muss in der Art und Weise liegen, wie Sie es getestet haben. –

Antwort

0

Sie verwenden ES6 Syntax mit import Aussagen hier. In snippet1 für import Parent from 'Parent1.js' zu arbeiten, müssen Sie export default a verwenden. Dies macht alles, was a ist das einzige, das von Parent1.js exportiert wird. Darüber hinaus erhalten Sie bei jedem Aufruf von Parent in snippet1 die Ergebnisse für a.

Indem Sie import * as Parent from Parent1.js tun, sammeln Sie alles, was möglicherweise in eine Sammlung exportiert wurde, und benennen Sie es Parent. Um auf a zuzugreifen, nennen Sie es Parent.a. Hier bezieht sich Parent auf die Sammlung, während oberhalb Parent ein Alias ​​für a steht.

Verwandte Themen