В этом руководстве вы узнаете, как использовать модули ES в Node.js с помощью операторов импорта и экспорта.
JavaScript использует модуль ECMAScript для создания пакетов для повторного использования. Помимо модуля CommonJS, Node.js поддерживает модули ES в версии 14.0.0.
Таким образом, Node.js имеет два типа модулей: модули ES и CommonJS.
По умолчанию Node.js рассматривает JavaScript как модули CommonJS. Но вы можете указать Node.js рассматривать код JavaScript.
Node.js будет рассматривать следующие файлы как модули ES:
- Файлы, заканчивающиеся на
.mjs - Файлы, оканчивающиеся на
.js, если ближайший родительский файлpackage.jsonсодержит поле верхнего уровня"type"со значением"module". - Передайте аргумент
--evalили передайте команду node черезSTDINс флагом--input-type=module.
Модуль через файлы .mjs
Сначала создайте новый файл с именем math.mjs и добавьте следующий код:
function add(x,y) {
return x + y;
}
function subtract(x,y){
return x - y;
}
export { add, subtract};В math модуле:
- Сначала определите функции
addиsubtract. - Во-вторых, экспортируйте функцию
addиsubtract, используя операторexport.
Во-вторых, создайте новый файл с именем app.mjs, который использует math модуль:
import { add, subtract } from './math.mjs';
let result = add(20, 10);
console.log(result);
result = subtract(30, 10);
console.log(result);В файле app.mjs :
- Сначала импортируйте функции
addиsubstractизmathмодуля с помощью оператораimport. - Во-вторых, вызовите функции
addиsubtract.
В-третьих, запустите файл app.mjs с помощью команды node :
node app.mjs
И вы должны увидеть в консоли следующее:
{ result: 30 }
{ result: 20 }В этом примере мы используем файлы, которые заканчиваются на .mjs, node.js рассматривает их все как модули ES.
Модуль с type-модулем в package.json
- Сначала переименуйте
math.mjsиapp.mjsвmath.jsиapp.js - Во-вторых, создайте файл
package.jsonсtypeполя верхнего уровня со значением"module":
{
"type":"module"
}- В-третьих, запустите файл
app.jsс помощью командыnode:
node app.js
И вы должны увидеть тот же результат, что и в первом примере.
С аргументом eval
В следующем примере выполняется команда node с аргументом eval и параметром --input-type=module :
node --input-type=module --eval "import { delimiter } from 'path';
console.log(delimiter);"В этом примере мы передаем следующий код в аргумент --eval :
import { delimiter } from 'path';
console.log(delimiter);Это импортирует разделитель из модуля path и выводит его на консоль.
Точно так же вы можете использовать следующую команду:
echo "import { delimiter } from 'path'; console.log(delimiter);
" | node --input-type=moduleЗаключение
- Node.js поддерживает как модули CommonJS, так и модули ES.
- По умолчанию Node.js рассматривает файлы как модули CommonJS.
- Используйте
.mjsилиpackage.jsonс полем верхнего уровняtype="module", если вы хотите, чтобы Node.js рассматривал файлы как модули ES.
