Модули
Node.js использует модульную систему. То есть вся встроенная функциональность разбита на отдельные пакеты или модули. Модуль представляет блок кода, который может использоваться повторно в других модулях.
При необходимости мы можем подключать нужные нам модули. Какие встроенные модули есть в node.js и какую функциональность они предоставляют, можно узнать из документации.
Для загрузки модулей применяется функция require(), в которую передается название модуля.
К примеру, если нам необходим модуль http для создания веб сервера:
1const http = require("http");
После получения модуля мы сможем использовать весь определенный в нем функционал, который опять же можно посмотреть в документации.
Подобным образом мы можем загружать и использовать другие встроенные модули.
Например, используем модуль os, который предоставляет информацию об окружении и операционной системе:
1const os = require("os");2// получим имя текущего пользователя3let userName = os.userInfo().username;4console.log(userName);
Мы можем создать свои модули.
Например создадим модуль getUserInfo для этого создадим файл get-user-info.js
1const os = require("os");2const currentDate = new Date();34module.exports.date = currentDate;56module.exports.getUserInfo = function(){7 return os.userInfo().username;8}
Здесь определена переменная currentDate.
Однако из вне она недоступна. Она доступна только в пределах данного модуля.
Чтобы какие переменные или функции модуля были доступны, необходимо определить их в объекте module.exports.
Объект module.exports - это то, что возвращает функция require() при получении модуля.
Вообще объект module представляет ссылку на текущий модуль, а его свойство exports определяет все свойства и методы модуля, которые могут быть экспортированы и использованы в других модулях
В отличие от встроенных модулей для подключения своих модулей надо передать в функцию require относительный путь с именем файла (расширение файла необязательно):
Подключим и используем этот модуль в файле app.js:
1const { getUserInfo } = require("./get-user-info");23getUserInfo()