# Модули ES в NodeJS

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

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

`{ "type": "module" }`

## Пример

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

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

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

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

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

`import { square, cube } from './math.js';`

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

`let res = square(2) + cube(3); console.log(res);`

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

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

`import fs from 'fs';`

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

`import { open, read, close } from 'fs';`

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

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

`npm install underscore`

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

`import _ from 'underscore';`

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

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

← →
↑