Про базовые модули 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)
Используется для импорта модулей, 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