Является ли ES6 `export class A` эквивалентным` module.exports = A`?

Когда я вижу скомпилированный код от Babel, они, похоже, не эквивалентны. На самом деле, первый преобразуется в exports.A = A, что не эквивалентно module.exports = A (может быть, это module.exports.A = A?)

Итак, есть ли стиль ES6 module.export =? Или синтаксис остается в ES6? Или этот синтаксис больше не рекомендуется в ES6?

Ответы

Ответ 1

Вы можете использовать

export default class A {

}

Или

class A {

}

export default A;

который будет экспортироваться как

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

Здесь объясняется, почему в разделе interop здесь.

Чтобы поощрять использование модулей CommonJS и ES6, при экспорте экспорта по умолчанию без другого экспорта module.exports будет установлен в дополнение к exports["default"].

Ответ 2

Вы можете использовать следующее в Node 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 . . . );

Для получения дополнительной информации:

Здесь статья об экспорте классов из модулей в Node v6

Ответ 3

babel6 не поддерживается export default A до modules.export=A

вы должны добавить plugin