Сокращенный синтаксис экспорта в CommonJS
Как вы знаете, мы можем экспортировать данные из модуля с помощью module.exports
:
function func1() {
}
function func2() {
}
module.exports.func1 = func1;
module.exports.func2 = func2;
Однако, зачастую писать module.exports
и имя функции создает слишком длинный код. Поэтому существует сокращенный вариант экспорта - в модуле есть специальный объект exports
, в который мы также можем записывать то, что хотим экспортировать:
function func1() {
}
function func2() {
}
exports.func1 = func1;
exports.func2 = func2;
Ограничения
С практической точки зрения переменная exports
просто содержит ссылку на module.exports
. Из-за этого проявляются некоторые ограничения: мы не можем записать что-то в саму переменную exports - так мы затрем ссылку на объект module.exports
. Это значит, что следующий код не будет работать:
function func1() {
}
function func2() {
}
exports = {func1, func2}; // не будет работать
exports = 'test'; // не будет работать
exports = [1, 2, 3, 4]; // не будет работать
exports = function() { // не будет работать
};