Меню

Создание и экспорт модулей в Nodejs

30.06.2018 - Back-end, NodeJS

Creating a module (создание модуля)

Давайте добавим модуль в наше приложение.
Допустим это будет logger.js — модуль для логирования сообщений. И мы можем переиспользовать этот блок, в любой части нашего приложения, или даже в другом приложении. Представим, что в нем мы будем использовать удаленную систему логирования, для логирования наших сообщений. Т.е. есть сайт где то там, который предоставляет логгирование как сервис. Они дают нам url и мы можем послать туда http запрос, чтобы залоггировать сообщение на облаке.

Вот например, будет у нас такой url, представим, что будем делать запрос на него. Нам также нужна функция log, которая будет принимать сообщения, и из этой функции мы собираемся делать http запрос. Не будем имплементировать функциональность задуманного, так как сейчас важно сконцентрироваться именно на работе модулей. Поэтому просто выведем наш лог в консоль.

var url = 'http://mylogger.io/log';

function log(message) {
    //Send an HTTP Request
    console.log(message);
}

И так, и функция и переменная — оба в области видимости этого модуля. Они приватные и не видны извне. Однако мы всё равно можем воспользоваться этим нашим логером из app.js. Для этого нам нужно сделать несколько телодвижений. Допустим нам нужен доступ к функции log. Для этого нам нужно сделать её публичной, видимой для окружающих. Мы уже видели содержимое module и помним, что там имеется свойство exports, которая представляет из себя объект. Всё что мы добавим в этот объект, будет экспортированно из этого модуля и будет доступно вне модуля.

Самый простой способ сделать это

module.exports.log = log;

Другими словами, объект, который мы экспортируем — exports имеет один метод — log.
Аналогично, если мы захотим экспортировать нашу переменную url, то просто добавим новое свойтсво в наш module.exports.

module.exports.url = url;

И конечно же мы можем изменить имя, которое будет на экспорте. Например, внутри переменная имеет имя url, а имя которое пойдет на экспорт будет endPoint

module.exports.endPoint = url;

В настоящем приложении каждый модуль может содержать несколько функций, переменных. И нам нужно экспортировать только часть из них. Потому что мы хотим, чтобы этот модуль было легко использовать.

Метки: , ,

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *