2017-03-02 32 views
-1

如下面的代碼所示,爲什麼不從Parent1.js導入Parent?爲什麼snippet2正確導入A,但snippet1不?導入*作爲A`和`導入A`這種奇怪行爲的原因是什麼?

在我的理解,出口應等於module.exports,所以snippet1應該工作...

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

「工作」和「不工作」是什麼意思?你觀察到什麼錯誤信息或意外行爲? – skrrgwasme

+0

@skrrgwasme表示調用'Parent.a'是否彈出Parent是未定義的錯誤 – Blake

+0

它們是相同的,除非你有循環依賴關係。問題必須以您測試它的方式進行。 –

回答

0

您使用ES6語法與import陳述在這裏。在snippet1import Parent from 'Parent1.js'工作,你需要使用export default a。這將使a是唯一從Parent1.js導出的東西。此外,每當您調用snippet1中的Parent時,您將得到a的結果。

通過做import * as Parent from Parent1.js您正在收集任何可能已導出到集合並命名爲Parent。要訪問a,請將其稱爲Parent.a。這裏Parent是指集合,而上面的Parenta的別名。

相關問題