Модули
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()