Модули Node.js
Обычно разработчики не громоздят весь код приложения в одном лишь файле, а разделяют его на несколько логически связанных файлов, которые в совокупности играют роль модулей.
Преимущества модулей заключается не только в удобстве и простоте работы, но и в возможности использования модулей в других приложения, что позволяет значительно ускорить скорость разработки будущих приложений. Также модули можно расширять и кастомизировать не затрагивая при этом работу самого приложения.
Создание и подключения модуля Node.js
В качестве примера создадим модуль, который будет содержать функцию подсчета элементов массива countElems()
и конструктор класса Fruit
.
Нам понадобятся минимум два файла: app.js
- основной файл приложения и mod.js
- модуль приложения.
Создадим файлы в рабочей директории.
touch /var/www/nodejs-app/{app.js,mod.js}
Далее откроем для редактирования файл mod.js
и пропишем в нем функцию подсчета элементов массива и конструктор для класса Fruit
.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
var countElems = function(arr){ var msg = "Массив состоит из " + arr.length + " элементов." return msg; } var Fruit = function(color, amount, taste){ // Конструктор класса Fruit this.color = color; this.amount = amount; this.taste = taste; } module.exports.countElems = countElems; // Экспортируем функцию countElems() module.exports.Fruit = Fruit; // Экспортируем конструктор класса Fruit |
В файле app.js
нам необходимо подключить созданный модуль, вызвать хранимую в нем функцию countElems()
и передать ей массив для подсчета элементов, а также вывести свойство color
для объекта apple
.
Подключение модулей осуществляется функцией require()
, в параметре которой нужно указать путь до модуля (указывать расширение .js
- не обязательно).
Для того чтобы использовать возможности модуля, его необходимо сохранить в переменной.
1 2 3 4 5 6 |
var mod = require('./mod'); // Сохраняем логику модуля в переменной var fruits = ['Абрикос','Апельсин','Хурма','Киви']; // Массив для подсчета кол-ва элементов var apple = new mod.Fruit("Зелёный",45,"Кислый"); // Объект apple, у которого есть свойство color console.log(mod.countElems(fruits)); console.log("Цвет фрукта: " + apple.color); |
Проверим работу модуля, выполнив файл app.js
, с помощью команды node
.
[meliorem@centos /var/www/nodejs-app]$ node app
Массив состоит из 4 элементов.
Цвет фрукта: Зелёный
Дополнительные варианты структуры модуля
Далее представлены несколько вариантов структурирования модуля, а именно различия в методах присвоениях экспортируемых компонентов. Вы можете использовать любой из вариантов, отличаются они лишь синтаксисом.
Прямое присвоение.
1 2 3 4 5 6 7 8 9 10 |
module.exports.countElems = function(arr){ var msg = "Массив состоит из " + arr.length + " элементов." return msg; } module.exports.Fruit = function(color, amount, taste){ // Конструктор класса Fruit this.color = color; this.amount = amount; this.taste = taste; } |
Присвоение путем создания объекта.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
var countElems = function(arr){ var msg = "Массив состоит из " + arr.length + " элементов." return msg; } var Fruit = function(color, amount, taste){ // Конструктор класса Fruit this.color = color; this.amount = amount; this.taste = taste; } module.exports = { countElems: countElems, // Экспортируем функцию countElems() Fruit: Fruit // Экспортируем конструктор класса Fruit } |