05Sep

nodejs-module-development-1-638

Давайте создадим Ваш первый проект с Node.js. Нашей основной целью будет знакомство с модулями – способом который Node предлагает для организации проекта.

Установите Node на свой компьютер.

https://nodejs.org

Начнем с того что откроем ваш редактор в новой пустой директории start, здесь будет находиться наш проект. Нужно так чтобы ваш редактор воспринимал написанный вами код не как простой JS а как синтаксис Node, перед началом настройте это самостоятельно.

Вы можете следовать за прогрессом нашего урока скачав код из репозитория:

Создадим файл с именем server.js

И добавим следующий код:

 function User(name){
 this.name = name;
 }

 User.prototype.hello = function(who){
 console.log("Hello, " + who.name);
 };

 var tim = new User("Tim");
 var tom = new User("Tom");

 tim.hello(tom);

Добавим объект User, который будет создавать пользователей, у пользователей будут методы, к примеру, Hello, где who это другой user. Далее небольшой код по его использованию.

Запускаем через консоль/терминал: node server.js

Работает! Результат видно из консоли.

Теперь представим, что у нас уже довольно сложное приложение и необходимо выносить логику таких сложных модулей как user в отдельный файл. Для этого в Node используется команда require.

Создадим файл user.js

И вынесем туда данные

 function User(name){
 this.name = name;
 }

 User.prototype.hello = function(who){
 console.log("Hello, " + who.name);
 };

 console.log("user.js is required!");

Также подключим наш файл сделав следующую запись на первой строке server.

require('./user');

Готово, запускаем! Не работает, так как переменная User не определена. Почему? Это происходит из-за того, что в Node вы можете объявлять переменные, функции, которые будут являться глобальными для данного файла. Они не становиться доступны для подключения, это позволяет писать действительно независимые модули и не опасаться, что вы перезапишите какую-то глобальную переменную другого модуля. Как же поступить в нашем случае.

Для этого используют система экспортов. В каждом модуле есть специальная переменная exports – это объект, и то что вы туда поместите вернуться как результат require.

Например (сделаем запись в User.js):

exports.User = User;

А в server.js добавим

require('./user');

var tim = new user.User("Tim");
var tom = new user.User("Tom");

Результатом данного require будет объект который здесь называется exports, сейчас он состоит из единственного свойства функции user.

Если необходимо создать глобальную переменную в Node.js, то необходимо объявить ее таким образом:

global.User = User;

А также изменить server:

var tim = new User("Tim");
var tom = new User("Tom");

Проверим.

Однако в Node есть ряд особенностей системы модулей, которые позволяют обойтись без глобальных переменных.

Поговорим о видах модулей:

  • JS – модули которые мы только что рассмотрели
  • NODE – файлы с таким расширением пишутся на языке C++ . Используются, когда нужна высокая производительность либо, когда нужно использовать какие-то возможности операционной системы, к которым нельзя обраться из JS и Node.js.
  • JSON

Создадим собственный JSON файл, который будет хранить информацию о нашей фразе в console.log User’а. Для этого:

Создадим JSON файл c именем ru.json

В него запишем:

var phrase = require('./en')

Таким образом найденный Json будет храниться во phrases.

В users запишем:

console.log(phrases.Hello + ", " + who.name);

Модули в формате JSON используется, когда хочется хранить какие-то данные в простейшем виде, в виде файлов.

Для дальнейшего развития проекта выделим user в отдельную директорию.

Создадим папку user.

Директории тоже можно подключать. При этом Node.js ищет файл с таким названием потом ищет файл .node/.JSON, если не находит ничего из перечисленного, то ищет директорию с названием user и в этой директории ищет файл с названием index.*и считает его модулем. Перетаскиваем user JS в директорию и переименуем в index.js, туда же переместим наш JSON. Теперь, если понадобиться добавить файлы для модуля user можно будет добавить их в эту директорию.

Вы можете скачать код урока  из следующего репозитория:

RPA_to_be_continuedМатериал урока взят из следующего скринкаста.

We are looking forward to meeting you on our website soshace.com