ES6`导出类A`是否等同于`module.exports = A`?

时间:2015-05-06 15:27:33

标签: node.js ecmascript-6

当我看到Babel编译的代码时,它们似乎并不等同。 实际上,前者转换为exports.A = A,这不等同于module.exports = A(也许是module.exports.A = A?)

那么有ES6风格module.export =吗?或者语法仍然在ES6中?或者在ES6中不再推荐使用该语法?

3 个答案:

答案 0 :(得分:16)

您可以使用

export default class A {

}

class A {

}

export default A;

将导出为

exports["default"] = A;
module.exports = exports["default"];

在互操作部分here.

中有一个解释原因
  

为了鼓励使用CommonJS和ES6模块,除了module.exports之外,在导出默认导出时不会设置其他导出exports["default"]

答案 1 :(得分:6)

您可以在节点v6:

中使用以下内容
"use strict" 

class ClassName {
 // class code
}

module.exports = ClassName

将上述文件另存为 ClassName.js

要将其导入另一个文件Test.js:

"use strict"
var ClassName= require('./ClassName.js');
var obj = new ClassName( Vars . . . );

更多信息:

Here's an article on exporting classes from modules in Node v6

答案 2 :(得分:2)

babel6不支持export default Amodules.export=A

您应该添加plugin