Модули¶
Node.js приложение имеет модульную архитектуру построения, причем каждый файл JavaScript рассматривается как отдельный модуль, который может зависеть от других модулей.
Node.js модули могут быть устанавливаемые (с использованием npm
) и собственные, которые создаются в процессе разработки.
Модули NPM¶
По умолчанию все npm модули устанавливаются в директорию node_modules
, создаваемую в директории, из которой была вызвана команда установки. Рассмотрим на примере express.
npm install express --save
Теперь express должен находиться по пути /node_modules/express
.
Все устанавливаемые Node.js модули доступны только на своем и дочерних уровнях иерархии, поэтому настоятельно рекомендуется осуществлять установку из корня проекта.
Собственные модули¶
Собственным Node.js модулем является любой JavaScript файл приложения, который экспортирует с помощью объекта exports
функции или переменные, которые могут быть использованы другими файлами.
app.js
const myModule = require('./my-module')
myModule.incrementCounter()
myModule.incrementCounter(3)
myModule.displayCounter()
myModule.decrementCounter()
myModule.displayCounter()
my-module.js
let counter = 0
exports.displayCounter = () =>
console.log(`Count value: ${counter}`)
exports.incrementCounter = (value = 1) => (counter += value)
exports.decrementCounter = (value = 1) => (counter -= value)
require()¶
Для подключения модулей используется функция require()
. Если подключается npm модуль, то функции необходимо передать только его название, независимо от того, на каком уровне иерархии проекта он запрашивается.
const express = require('express')
Функция Node js require() сама знает, что такие модули следует искать в node_modules, причем поиск самой директории node_modules будет происходить начиная от места, в котором был запрошен модуль и далее вверх по иерархии, пока она не будет найдена.
Подключение собственных модулей также осуществляется с использованием require()
, только вместо имени модуля ей передается путь к файлу, относительно места, из которого он запрашивается.
const myModule = require('./my-module')
Все пути файлов собственных модулей начинаются с ./
, что означает текущая директория.