Как использовать импорт ES6 в Node.js?
Введение в импорт ES6:
Оператор импорта используется для импорта модулей, которые экспортируются каким-либо другим модулем. Модуль - это файл, содержащий фрагмент повторно используемого кода. Модули импорта находятся в строгом режиме независимо от того, объявлен он или нет.
Синтаксис импорта:
импортировать имя из 'имя-модуля'
Импорт можно выполнить разными способами:
Импорт всего модуля:
импортировать * как имя из 'имя-модуля'
Импортировать экспорт по умолчанию из модуля:
импортировать имя из 'имя-модуля'
Импорт одного экспорта из модуля:
импортировать {имя} из "имя-модуля"
Импорт нескольких экспортов из модуля:
импортировать {nameOne, nameTwo} из 'имя-модуля'
Импорт модуля только для побочных эффектов
импортировать './module-name'
Node js не поддерживает импорт ES6 напрямую. Если мы попытаемся использовать импорт для импорта модулей непосредственно в node js, он выдаст ошибку. Например, если мы попытаемся импортировать экспресс-модуль, написав import express из узла 'express', js выдаст следующую ошибку:
В Node есть экспериментальная поддержка модулей ES. Чтобы включить их, нам нужно внести некоторые изменения в файл package.json. Перед тем, как следовать инструкциям, убедитесь, что Node установлен. Ниже приведены шаги для достижения того же.
- В файле package.json добавьте «тип»: «модуль» . Добавление этого включает модули ES6.
Файл package.json должен выглядеть так:
package.json
//package.json
{
"name"
:
"index"
,
"version"
:
"1.0.0"
,
"description"
:
""
,
"main"
:
"index.js"
,
"type"
:
"module"
,
"scripts"
: {
"test"
:
"echo "Error: no test specified" && exit 1"
},
"keywords"
: [],
"author"
:
""
,
"license"
:
"ISC"
}
Создайте файл index.js и напишите программу, используя импорт ES6. Например, попробуем импортировать экспресс в файл index.js
index.js файл
//index.js
import express from
'express'
;
const app = express();
app.get(
'/'
,(req,res) => {
res.send(
'GeeksforGeeks'
);
})
const PORT = 5000;
app.listen(PORT,() => {
console.log(`Running on PORT ${PORT}`);
})
Теперь запустите файл index.js, набрав в терминале node –experimental-modules index.js.
Используя модуль esm:
Другой способ сделать это - создать файл с расширением .mjs . Если мы используем файл с расширением .mjs, нам не нужно добавлять «тип»: «модуль» в файл package.json. Мы можем написать программу напрямую и запустить ее, набрав в терминале node –experimental-modules index.mjs.
Теперь при использовании файла с расширением .mjs файл package.json будет выглядеть так:
Javascript
// package.json when using .mjs file
{
"name"
:
"index"
,
"version"
:
"1.0.0"
,
"description"
:
""
,
"main"
:
"index.js"
,
"scripts"
: {
"test"
:
"echo "Error: no test specified" && exit 1"
},
"keywords"
: [],
"author"
:
""
,
"license"
:
"ISC"
}
Создайте файл index.mjs и напишите программу, используя импорт ES6.
Javascript
//index.mjs
import express from
'express'
;
const app = express();
app.get(
'/'
,(req,res) => {
res.send(
'GeeksforGeeks'
);
})
const PORT = 5000;
app.listen(PORT,() => {
console.log(`Running on PORT ${PORT}`);
})
Теперь в узле терминального типа –experimental-modules index.mjs . Это запустит файл, и приложение теперь будет работать на PORT 5000.
Использование модуля esm
Монтаж
npm установить esm
Теперь попробуйте выполнить программу, написанную ранее в файле index.js, набрав в терминале node -r esm index.js.
Другой способ использовать модуль esm - создать другой файл, например server.js, который загружает esm перед фактическим приложением. В файле server.js напишите приведенный ниже код
//server.js require = require ("esm") (модуль); module.exports = require ("./ index.js");
Примечание. В файл server.js мы импортируем файл index.js, который содержит фактическую программу, которую необходимо выполнить.
Теперь в терминале типа node server.js для выполнения программы
Вывод файлов index.js и index.mjs в приведенном выше методе:
Преимущества использования импорта вместо require в nodejs:
- Импорт помогает выборочно загружать необходимые фрагменты кода, что помогает экономить память.
- В случае необходимости загрузка выполняется синхронно, тогда как импорт может быть асинхронным, поэтому он работает лучше, чем требуется.
- В файле package.json добавьте «тип»: «модуль» . Добавление этого включает модули ES6.