2015-05-06 10 views
16

Wenn ich den kompilierten Code von Babel sehe, scheinen sie nicht gleichwertig zu sein. Eigentlich sind die früheren Transformationen exports.A = A, die module.exports = A nicht gleichwertig ist (Vielleicht ist es module.exports.A = A?)Ist ES6 `export class A` äquivalent zu` module.exports = A`?

So gibt es eine ES6 Stil module.export =? Oder bleibt die Syntax noch in ES6? Oder ist diese Syntax in ES6 nicht mehr zu empfehlen?

Antwort

16

können Sie

verwenden
export default class A { 

} 

Oder

class A { 

} 

export default A; 

Welche wird exportieren als

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

Es gibt eine Erklärung dafür, warum in der Interop Abschnitt here.

Um die Verwendung von CommonJS- und ES6-Modulen zu fördern, wird beim Exportieren eines Standardexports ohne weitere Exporte module.exports zusätzlich zu exports["default"] festgelegt.

2

babel6 nicht export default A unterstützt modules.export=A

Sie ein plugin

5

hinzufügen sollten Sie die folgenden in Knoten v6 verwenden können:

"use strict" 

class ClassName { 
// class code 
} 

module.exports = ClassName 

Speichern Sie die obige Datei als ClassName.js

Um es in einer anderen Datei test.js zu importieren:

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

Weitere Info:

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

Verwandte Themen