13. Уроки Node.js. Разработка, supervisor

 

node-js-development-Brillmindz
На этом занятии наша основная цель – улучшить нашу разработку на Node.js. Первое средство, которое мы для этого изучим, называется supervisor. До этого момента мы разработали эхо-сервер.


В процессе разработки была некоторая сложность. Любые изменения в коде требовали перезапуска сервера. Это легко объяснить, ведь Node.js считывает файлы только один раз. Считав файл, он получает соответствующий объект модуля и в дальнейшем использует его. А что делать в процессе разработки?
Есть, конечно, вариант очистить внутренний cache Node.js, но наиболее часто используют другой подход, а именно специальный модуль, который отслеживает все файлы с директории. Как только в ней что-то меняется, перезапускает Node.js. один из таких модулей называется supervisor. Этот модуль содержит в себе console утилиту, которая должна быть доступна по системному пути.

Поэтому установим его глобально:
npm ig supervisor

Теперь я запускаю вместо node server.js  -> supervisor server.js

Что это  нам дает?  Сейчас я изменю файл, например, добавлю в него пустую строку и сохраню то, что получилось.


Вы заметили? Crashing child  и старт новый. Давайте еще раз. Уберем строку, сохраним.

WebStorm сохраняет при одном нажатии кнопки Save, либо если он теряет фокус. То есть, как только я переключусь на окно браузера, он тут же сохранит  то, что я редактировал.

Supervisor все время следит за файлами, и как только он видит, что изменились файлы с расширениями по умолчанию node либо js, то перезапускает Node.

Более того, если в этой директории есть другие файлы, и они изменены, то тоже supervisor смотрит над всем содержимым директории, наблюдает, какие файлы изменились. Как только какой-нибудь из них будет изменен, включая путь директории, то он запустит Node. Это очень удобно при разработке больших многоуровневых проектов.

Какие подводные камни есть у supervisor? Они тоже присутствуют.
Первый подводный камень, о котором необходимо знать, это новые файлы. Создадим файл file.js. Сохраним.

Никакой реакции не происходит. Это потому что supervisor, во всяком случае, текущая его версия, наблюдает за каждым файлом индивидуально. Она просто не знает, что появился новый файл.  Но, если мы после того, как изменили файл, внесем его через require-сервер, то как раз изменения в сервере оно отследит и все перезапустит. Ну, а  после перезапуска будет следить и за новым файлом js тоже. Таким образом, если добавление нового файла влечет за собой изменения существующих, а, как правило, оно так и есть, то у нас все хорошо. Но в тех редких случаях, когда нет, то придется иметь в виду, что нужно перезапускать supervisor вручную. Автоматически новые файлы он не обнаружит.

Следующий подводный камень supervisor заключается в то, что если мы поставили много модулей, и у нас есть большая директория node.modules, а  каждый модуль ставит свои зависимости, то общее количество файлов в поддиректории может стать очень большим, и supervisor начнет есть очень много процессорного времени. Особенно это заметно на ноутбуках, которые при этом начинают гораздо сильнее греться. Чтобы такого не было, желательно supervisor либо запускать с параметром ignor и указывать в нем что нужно игнорировать  node.modules, либо переместить эту node.modules куда-то наверх, потому что это внешние модули. Они изменяются не так уж часто.

Итак, далее для разработки мы будем использовать   supervisor.

Код урока находится в нашем репозитроии.

weekly-header-boxes-retina

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

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

About the author

Stay Informed

It's important to keep up
with industry - subscribe!

Stay Informed

Looks good!
Please enter the correct name.
Please enter the correct email.
Looks good!

Related articles

Уроки Express.js . Логгер, Конфигурация, Шаблонизация с EJS. Часть 2.

Favicon – это все connect Middleware, он смотрит, если url имеет вид favicon.ico, то он читает favicon и ...

3. Уроки Express.js. Шаблонизация с EJS: Layout, Block, Partials

В реальной жизни у нас обычно больше, чем один шаблон. Более того, если уж так ...

24.11.2016

Уроки Express.js. Основы и Middleware. Часть 2.

Всем привет! Давайте продолжим наш урок об основах Express и Middleware. Итог (добавим в ...

No comments yet

Sign in

Forgot password?

Or use a social network account

 

By Signing In \ Signing Up, you agree to our privacy policy

Password recovery

You can also try to

Or use a social network account

 

By Signing In \ Signing Up, you agree to our privacy policy