Сокращенный синтаксис экспорта в модулях CommonJS в JavaScript

Как вы знаете, мы можем экспортировать данные из модуля с помощью 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;

Дан следующий код:

function square(num) { return num * num; } function cube(num) { return num * num * num; } module.exports.square = square; module.exports.cube = cube;

Перепишите его через сокращенный синтаксис.

Ограничения

С практической точки зрения переменная exports просто содержит ссылку на module.exports. Из-за этого проявляются некоторые ограничения: мы не можем записать что-то в саму переменную exports - так мы затрем ссылку на объект module.exports.

Это значит, что следующий код не будет работать:

function func1() { } function func2() { } exports = {func1, func2}; // не будет работать

И этот:

exports = 'test'; // не будет работать

И этот:

exports = [1, 2, 3, 4]; // не будет работать

И этот:

exports = function() { // не будет работать };

Дан следующий код:

function square(num) { return num * num; } function cube(num) { return num * num * num; } exports = {square, cube};

Исправьте ошибку, допущенную в этом коде.