Давайте создадим Ваш первый проект с Node.js. Нашей основной целью будет знакомство с модулями – способом который Node предлагает для организации проекта.
Установите Node на свой компьютер.
Начнем с того что откроем ваш редактор в новой пустой директории 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 можно будет добавить их в эту директорию.
Вы можете скачать код урока из следующего репозитория:
Материал урока взят из следующего скринкаста.
We are looking forward to meeting you on our website soshace.com