Является ли 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