Node.js
Экспорт и импорт модуля в node.js
Поиск…
Использование простого модуля в node.js
Что такое модуль node.js ( ссылка на статью ):
Модуль инкапсулирует связанный код в единую единицу кода. При создании модуля это можно интерпретировать как перемещение всех связанных функций в файл.
Теперь давайте посмотрим пример. Представьте, что все файлы находятся в одном каталоге:
Файл: printer.js
"use strict";
exports.printHelloWorld = function (){
console.log("Hello World!!!");
}
Другой способ использования модулей:
Файл animals.js
"use strict";
module.exports = {
lion: function() {
console.log("ROAARR!!!");
}
};
Файл: app.js
Запустите этот файл, перейдя в ваш каталог и набрав: node app.js
"use strict";
//require('./path/to/module.js') node which module to load
var printer = require('./printer');
var animals = require('./animals');
printer.printHelloWorld(); //prints "Hello World!!!"
animals.lion(); //prints "ROAARR!!!"
Использование импорта в ES6
Node.js построен против современных версий V8. Поддерживая новейшие версии этого движка, мы гарантируем, что новые функции из спецификации JavaScript ECMA-262 будут доведены до разработчиков Node.js своевременно, а также продолжительные улучшения производительности и стабильности.
Все функции ECMAScript 2015 (ES6) разделены на три группы для доставки, постановки и выполнения функций:
Все функции доставки, которые V8 считает стабильными, включаются по умолчанию на Node.js и НЕ требуют какого-либо флага времени выполнения. Поэтапные функции, которые являются почти завершенными функциями, которые не считают стабильными командой V8, требуют флага времени выполнения: --harmony. В процессе выполнения функции могут быть активированы индивидуально по их соответствующему флагом гармонии, хотя это крайне не рекомендуется, если только для целей тестирования. Примечание. Эти флаги отображаются V8 и могут изменяться без уведомления об устаревании.
В настоящее время ES6 поддерживает операторы импорта изначально см здесь
Поэтому, если у нас есть файл fun.js
...
export default function say(what){
console.log(what);
}
export function sayLoud(whoot) {
say(whoot.toUpperCase());
}
... и если был еще один файл с именем app.js
где мы хотим использовать наши ранее определенные функции, существует три способа их импорта.
Импорт по умолчанию
import say from './fun';
say('Hello Stack Overflow!!'); // Output: Hello Stack Overflow!!
Импортирует функцию say()
поскольку она помечена как экспорт по умолчанию в исходный файл ( export default …
)
Именованный импорт
import { sayLoud } from './fun';
sayLoud('JS modules are awesome.'); // Output: JS MODULES ARE AWESOME.
Именованный импорт позволяет нам импортировать именно те части модуля, которые нам действительно нужны. Мы делаем это, явно называя их. В нашем случае, назвав sayLoud
в фигурных скобках в инструкции import.
Вложенный импорт
import * as i from './fun';
i.say('What?'); // Output: What?
i.sayLoud('Whoot!'); // Output: WHOOT!
Если мы хотим иметь все это, это путь. Используя синтаксис * as i
мы имеем оператор import
предоставляет нам объект i
который содержит весь экспорт нашего модуля fun
как соответствующие им свойства.
пути
Имейте в виду, что вы должны явно указывать пути импорта как относительные пути, даже если импортируемый файл находится в том же каталоге, что и файл, в который вы импортируете, используя ./
. Импорт из неподписанных дорожек
import express from 'express';
будут просматриваться в локальных и глобальных папках node_modules
и будут node_modules
ошибку, если не найдены соответствующие модули.
Экспорт с использованием синтаксиса ES6
Это эквивалентно другому примеру, но вместо этого используется ES6.
export function printHelloWorld() {
console.log("Hello World!!!");
}