NodeJS | Как подключить свой модуль? — efim360.ru

NodeJS | Как подключить свой модуль?

 

Про базовые модули NodeJS всё понятно. Подключил по названию и готово. А как быть со своими собственными файлами-модулями? Ниже описан один из примеров подключения своего модуля для NodeJS.

 

Шаг 1 - Создаём сам файл-модуль

Я просто создам массив внутри файла ttt с расширением .js

["t1", "t2", "t3"]

Я положу этот файл в корневую директорию сайта/приложения.

 

Шаг 2 - Дадим возможность файлу ttt.js быть видимым для конфига сервера

Чтобы наш массив мог выходить за пределы своего файла ttt.js и быть "подключённым", его нужно ЭКСПОРТИРОВАТЬ. Немного изменим запись:

module.exports = ["t1", "t2", "t3"]

Мы используем объект module и его свойство exports.

 

Шаг 3 - Подключение экспортируемого модуля в главном файле сервера server.js

Пусть файл с конфигом сервера у нас называется server.js. Пусть оба файла лежат на одном уровне - в корне директории сайта/приложения.

Чтобы в него подключить наш собственный модуль нужно написать следующую команду:

const t = require(__dirname + '/ttt') 
//с константой dirname
   или
const t = require('./ttt') 
//с указанием относительного пути

Теперь в переменной t будет лежать наш массив, экспортированный из файла ttt.js

Можем использовать переменную как нам угодно.

 

Инфомация о module.exports

Объект module.exports создаётся модульной системой Module. Иногда это неприемлемо; многие хотят, чтобы их модуль был экземпляром какого-то класса. Для этого присвойте желаемый объект экспорта к module.exports. Назначение желаемого объекта для экспорта exports просто повторно привяжет локальную переменную экспорта exports, что, вероятно, не то, что нужно.

 

Синтаксис require(id)

  • id <string> имя модуля или путь
  • Возвращает: <any> экспортированное содержимое модуля

Используется для импорта модулей, JSON и локальных файлов. Модули можно импортировать из node_modules. Локальные модули и файлы JSON могут быть импортированы с использованием относительного пути (например, ./, ./foo, ./bar/baz, ../foo), который будет разрешен для каталога с именем __dirname (если определено) или текущего рабочего каталога. Относительные пути стиля POSIX разрешаются независимо от ОС, что означает, что приведённые выше примеры будут работать в Windows так же, как и в системах Unix.

 

Информационные ссылки

JavaScript | Маршрутизация URL | ЧПУ-адреса

Стандарт NodeJS - https://nodejs.org

Стандарт NodeJS - Раздел "require(id)" - https://nodejs.org/dist/latest-v14.x/docs/api/modules.html#modules_require_id