Оценок пока нет Создание пользовательских модулей в Node.js

Масштабируемость проекта на Node.js отличается легкостью реализации и подразумевает создание пользовательских модулей. Все модули Node.js можно разделить на встроенные, которые скомпилированы вместе с сервером, так и сторонние, пользовательские. Встроенными можно считать часто используемые модули, которые работают с сетью (http), с файловой системой (fs) , с событиями (events) и т.д. Пользовательские модули можно загрузить из менеджера пакетов npm или создавать собственные, которые будут решать те задачи проекта, которые легче отделить от остальной части. Виды модулей, которые можно реализовать можно подразделить на 3 вида:

  • модули js — обычные модули, в которых можно написать серверный код Node.js;
  • модули json — хорошо подходят для хранения часто изменяемых переменных проекта или для его конфигурации. По сути это обычный файл с данными типа json;
  • модули node — это скомпилированный тип модулей, которые отличаются высокой производительностью для высоконагруженных частей проекта.

Любой готовый модуль можно разместить в пользовательской директории, но первую очередь сервер ищет модуль с таким названием в стандартной директории node_modules и если там не находит, то ищет уже в пользовательских директориях, при этом, если по молчанию названия модуля не указано, то ищет модуль с названием index.js, дальше index.json и index.node. Для подключения модуля в серверной части используется функция include(), который возвращает переменную из модуля. Для того, чтобы эта переменная была доступна при подключении используется конструкция exports.varName1 = varName2, где varName1 — это пользовательская переменная, которая доступна при подключении модуля, а varName2 — это данные, которые передаются в переменную модуля varName1 после обработки в модуле. Далее покажем на примере как создать и использовать модули js и json.

1. Структура примера

Давайте, чтобы детально описать пример создадим проект со следующей структурой:node-modules-exmpl-structure

где www — корневая папка проекта, server.js — главный файл проекта для организации точки входа в проект и подключения модулей, configs — директория для модулей json и наш модуль в ней conf.js, modules — директория для модулей js и наш модуль в ней module.js. Давайте напишем код работы для каждого файла в структуре.

2. Организация модуля conf.json

Данный модуль является файл для хранения одной переменной в формате json и давайте запишем в ней вот такой код с переменными:

{
"name":"Mark",
"age":25
}

3. Организация модуля module.js

Данный модуль, пусть, будет содержать код для возврата объекта, который мы в ней создадим:

//Создадим объект пользователей
function Users(name){
    this.name = name;
}
//Добавим еще один метод для вывода имени
Users.prototype.view = function(){
    console.log(this.name);
};
exports.Users =  Users;//Возвращаем переменную из модуля

4. Файл запуска server.js

Ниже представлен код файла server.js, в котором подключаются модули и запускается пример работы проекта:

var user = require('./modules/module.js');//Подключаем наш модуль js
var conf = require('./configs/conf.json');//Подключаем наш модуль json
var name = new user.Users(conf.name);//Создаем объект из переменной модуля
name.view();//Выводим имя юзера на консоль

При указании файла модуля можно опустить расширения *.js и *.json

5. Возврат чистого объекта из модуля

Если мы посмотрим на код выше, то станет понятно, что объект Users — это объект переменной user, который возвращается модулем через конструкцию exports. А как сделать так, чтобы модуль возвращал чистый объект, т.е. можно было бы сразу написать вот так:

var Users = require('./modules/module.js');//Подключаем наш модуль js
var conf = require('./configs/conf.json');//Подключаем наш модуль json
var name = new Users(conf.name);//Создаем объект
name.view();//Выводим имя юзера на консоль

Для того, чтобы данный код сработал необходимо в модуле указать export через его глобальный объект module:

//Создадим объект пользователей
function Users(name){
    this.name = name;
}
//Добавим еще один метод для вывода имени
Users.prototype.view = function(){
    console.log(this.name);
};
module.exports.Users =  Users;//Возвращаем переменную из модуля

6. Запуск примера

Через консоль переходим в директорию нашего проекта www и выполняем команду(в Windows):

node server.js

и мы увидим результат, как на скриншоте:
node-modules-post-resultСкачать рабочий пример можно скачать по ссылке.

 

Пожалуйста, оцените материал

WebSofter

Web - технологии