betacode

Руководство NodeJS Module

  1. Что такое NodeJS Module?
  2. Создайте свой Module 
  3. Export (экспортировать) многие вещи

1. Что такое NodeJS Module?

Проще говоря, NodeJS Module это библиотека Javascript, является набором функций (function) объектов и переменных, которые вы можете положить в ваше приложение для использования. Использование Module помогает упростить кодирование и управлять кодом в вашем приложении. Обычно каждый module будет написан в отдельном файле.
NodeJS встроил довольно много Module, имеет много стандартных библиотек для развития вашего приложения. Ниже является список:
Module
Описание
assert
Предоставляет набор assertion tests (Тест утверждения)
buffer
Для рбработки бинарных данных (binary data).
child_process
Для запуска дочернего процесса (child process)
cluster
Чтобы отделить один процесс (process) на многие процессы.
crypto
Содержит криптографические функции OpenSSL (OpenSSL cryptographic functions)
dgram
Предоставляет применение (implementation) для UDP sockets
dns
Предоставляет функии поиска (lookups) и разрешение (resolution) DNS.
events
Для обработки событий (events)
fs
Для обработки файла system
http
Сделать чтобы Node.js работал как HTTP server.
https
Сделать чтобы Node.js работал как HTTPS server.
net
Для создания server и client.
os
Предоставляет информацию про операционную систему.
path
Для обработки ссылки файла (file paths).
querystring
Для обработки URL query strings
readline
Для обработки потоков данных (data streams), читаемые построчно (line).
stream
Обрабатывает потоки данных (streaming data)
string_decoder
Для декодирования (decode) объектов буфера (buffer objects) в string
timers
Поставить таймер для выполнения функции Javascript.
tls
Для выполнения протоколов TLS & SSL.
tty
Предоставляет классы используемые text terminal.
url
Помогает парсировать (parse) строки URL (URL strings)
util
Предоставляет утилитарные функции (Utility functions).
v8
Получить доступ в информацию V8 JavaScript engine.
vm
Компилирует (compile) код JavaScript в виртуальной машине (Virtual machine)
zlib
Обрабатывает сжатия или распаковки файлов.
Чтобы использовать определенный module, используйте функцию require(moduleName). Например http это module, который заставляет NodeJS работать как HTTP Server.
Удостоверьтесь что вы успешно создали проект NodeJS. Если нет, то можете просмотреть статью ниже:
На вашем проекте NodeJS, создайте папку module-examples для содержания файлов Javascript, которые вы практиковали в данной статье.
Создайте файл с названием http-example.js в папке module-examples.
http-example.js
var http = require("http");

http.createServer(function(req, res)  {

     res.writeHead(200, {"Content-Type": "text/html"});
     res.write("<h1>Hello World</h1>");
     res.write("<h2>Hello Http</h2>");
     res.end();

}).listen(8080);
Откройте окно CMD и CD к вашей папке проекта, используйте NodeJS для запуска файла http-example.js:
node ./module-examples/http-example.js
Откройте браузер и пройдите по ссылке:

2. Создайте свой Module 

В NodeJS вы можете создать кастомизированный Module. Module это файл Javascript, обратите внимание на расположение данного файла, так как оно влияет на то, как вы его используете. Вы имеете 2 способа выбрать расположение данного файла:
  1. Файл Module расположен в папке с названием node_modules (подпапка проекта). Это рекомендуемое расположение.
  2. Файл Module раположен в вашей определенной папке, не в node_modules.
NodeJS рекомендует вам расположить ваши файлы Module в папку node_modules проекта. Погодите, я объясню вам причину почему стоит расположить ваш module в данной папке.
Синтаксис для export (экспорта) чего-либо в вашем файле Javascript .
exports = something;

// or:

module.exports = something;
my-first-module.js
Для начала, создайте файл my-first-module.js в папке node_modules, и файл test-my-first-module.js в другой папке.
В данном примере, файл my-first-module.js имеет много функций (function), но я export (экспортирую) только функцию "sum".
node_modules/my-first-module.js
subtract = function(a, b)  {
    return a - b;
}

sum = function (a, b)  {
    return a + b;
}

module.exports = sum;
module-examples/test-my-first-module.js
var sum = require("my-first-module.js");

console.log("Sum 100 and 150");

var c = sum(100, 150);

console.log("Value = " + c);
Запустите пример выше:
node ./module-examples/test-my-first-module.js
Для файлов module расположенных в папке node_modules его использование очень просто. Вам не нужно волноваться об относительной или абсолютной ссылке.
var myVar = require("module-file-name.js");

// or:

var myVar = require("module-file-name");
my-second-module.js
Далее мы создаем файл my-second-module.js расположенный в определенной папке, например: node_modules_2.
node_modules_2/my-second-module.js
var COPY_RIGHT = "o7planning";

module.exports = COPY_RIGHT;
Чтобы использовать module расположенный в другой папке с node_modules вам нужно использовать относительную ссылку.
module-examples/test-my-second-module.js
var copyRight
  = require("../node_modules_2/my-second-module.js");

console.log("Copy right: " + copyRight);
node ./module-examples/test-my-second-module.js

3. Export (экспортировать) многие вещи

В одном файле module может содержаться много функций (function), много переменных (variable), и много классов (class). Данный пример показывает вам способ export (экспортировать) много вещей в данном файле.
node_modules/my-third-module.js
// A variable!!
var COPY_RIGHT = "o7planning";

// A function!!
var multiple = function(a, b)  {

   return a * b;
};

// A class!!
var Person = class {

   constructor(name, age) {
     this.name = name;
     this.age = age;
   }

   showInfo()  {
     console.log("name="+ this.name+", age="+ this.age);
   }
};

// Something to Export!!
var somethingToExport = {
  Person: Person,
  multiple : multiple,
  COPY_RIGHT : COPY_RIGHT
};

// Exprort it!!
module.exports = somethingToExport;
module-examples/test-my-third-module.js
var module3 = require("my-third-module.js");

console.log("Using Person class of module:");

var p = new module3.Person("Smith", 20);

p.showInfo();

console.log(" -- ");
console.log("Using multiple Function of module:");

var c = module3.multiple(20, 5);

console.log("Value= "+ c);

console.log(" -- ");
console.log("Using Variable of module:");

var copyRight = module3.COPY_RIGHT;

console.log("Copy right: " + copyRight);
node ./module-examples/test-my-third-module.js