这种奇怪的行为导致`import * as A`和`import A`是什么原因?

时间:2017-03-02 08:06:50

标签: ecmascript-6 commonjs

如下面的代码所示,为什么'Parent1.js中的导入父不工作?为什么snippet2正确导入A,但snippet1不导入?

根据我的理解,导出应该等于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

1 个答案:

答案 0 :(得分:0)

您在这里使用带有import语句的ES6语法。在snippet1 import Parent from 'Parent1.js'工作时,您需要使用export default a。这将使a唯一从Parent1.js导出的内容。此外,每当您在Parent中调用snippet1时,您都会获得a的结果。

通过执行import * as Parent from Parent1.js,您将收集可能已导出到集合中的任何内容并将其命名为Parent。要访问a,请将其称为Parent.a。此处Parent表示集合,而上面Parenta的别名。