Node.js: множественный экспорт функций из модуля

Экспорт одной функции

Изначально имеем модуль irray.js с одной именованной функцией erayCanter, экспортируемой следующим образом:

// irray.js
export const erayCanter = () => { /* ... */ };

В другом файле функция импортируется:

// index.js
import { erayCanter } from './irray.js';

Экспорт нескольких функций и переменных

Добавим в модуль sings.js функцию multiplay и переменную samwell:

// sings.js
const samwell = 451;

const multiplay = (x, y) => `${x} * ${y} = ${x * y}`;

export const erayCanter = () => { /* ... */ };
export const multiplying = multiplay;
export { samwell };

В index.js импортируем и используем:

import * as sings from './sings.js';

console.log(sings.samwell);
console.log(sings.erayCanter()); // Вызов функции
console.log(sings.multiplying(5, 8));

Обратите внимание на корректную интерполяцию строк в функции multiplay. В предыдущем примере использование фигурных скобок {} внутри шаблона строки было избыточным.

Упрощенный экспорт

Экспорт отдельных переменных можно упростить:

// sings.js
const samwell = 451;

const multiplay = (x, y) => `${x} * ${y} = ${x * y}`;

export const erayCanter = () => { /* ... */ };
export { multiplay, samwell };

Экспорт через default

Еще один способ — экспорт через default:

// sings.js
const samwell = 451;

const multiplay = (x, y) => `${x} * ${y} = ${x * y}`;

const erayCanter = () => { /* ... */ };

export default {
  erayCanter,
  multiplay,
  samwell
};

В index.js:

import sings from './sings.js';

console.log(sings.samwell);
console.log(sings.erayCanter());
console.log(sings.multiplay(5, 8));

Рассмотрены три способа экспорта нескольких функций и переменных из одного модуля Node.js. Выбор способа зависит от контекста и предпочтений.

Что будем искать? Например,программа