Модули ES в NodeJS

По умолчанию NodeJS использует модули по стандарту CommonJS. Так сложилось исторически. Однако, начиная с версии 13.2.0 появилась полноценная поддержка ES модулей. Так как ES модули - это официальный стандарт модулей, то я рекомендую вам пользоваться именно им.

Чтобы перейти на модули ES вам нужно разместить в папке с запускаемым вами файлом файл package.json со следующим содержимым:

package.json{
  "type": "module"
}

Пример

Давайте для примера сделаем модуль math для математических операций. Разместим его код в файле math.js:

math.jsfunction square(num) {
  return num * num;
}

function cube(num) {
  return num * num * num;
}

Выполним экспорт наших функций:

math.jsexport function square(num) {
  return num * num;
}

export function cube(num) {
  return num * num * num;
}

Импортируем теперь этот модуль в файл index.js:

index.jsimport { square, cube } from './math.js';

Воспользуемся функциями нашего модуля:

index.jslet res  = square(2) + cube(3);
console.log(res);

Встроенные модули

Аналогичным образом импортируются встроенные модули. Например, импортируем модуль fs для работы с файловой системой:

index.jsimport fs from 'fs';

Не обязательно импортировать все функции модуля. Можно импортировать только нужные нам:

index.jsimport { open, read, close } from 'fs';

Подключение установленного через npm

Аналогичным образом импортируются модули, установленные через npm. Давайте для примера установим библиотеку underscore:

terminalnpm install underscore

Импортируем ее:

index.jsimport _ from 'underscore';

В настоящее время в документациях почти всех библиотек в инструкциях подключение описано в стиле CommonJS. Вы, однако, можете сами переделать его на ES и подключить к своему проекту.

Задание 1

Установите библиотеку lodash. Подключите ее себе в проект и используйте несколько методов из этой библиотеки.