HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-02-26
1 <p>Необходимость перезапускать сервер после каждого изменения кода может сильно расшатать нервную систему. Во-первых, это долго, такой подход мешает быстро и эффективно работать. Иногда говорят, что становится длинным цикл обратной связи. А если приложение тяжелое, то время старта может быть неприлично большим. Желание разбить клавиатуру будет появляться всё чаще и чаще.</p>
1 <p>Необходимость перезапускать сервер после каждого изменения кода может сильно расшатать нервную систему. Во-первых, это долго, такой подход мешает быстро и эффективно работать. Иногда говорят, что становится длинным цикл обратной связи. А если приложение тяжелое, то время старта может быть неприлично большим. Желание разбить клавиатуру будет появляться всё чаще и чаще.</p>
2 <p>К счастью, делать этого не придётся. В node.js, как, впрочем, и во всех остальных экосистемах, существуют библиотеки, решающие эту задачу достаточно хорошо. Но перед тем, как смотреть конкретные библиотеки, давайте проанализируем подходы, применяемые для этого.</p>
2 <p>К счастью, делать этого не придётся. В node.js, как, впрочем, и во всех остальных экосистемах, существуют библиотеки, решающие эту задачу достаточно хорошо. Но перед тем, как смотреть конкретные библиотеки, давайте проанализируем подходы, применяемые для этого.</p>
3 <h2>Опрос файловой системы (ФС)</h2>
3 <h2>Опрос файловой системы (ФС)</h2>
4 <p>Идея решения тривиальна. Нам понадобится отдельная программа, которая с небольшой периодичностью опрашивает файлы в указанной папке и проверяет, изменились ли они со времени последнего рестарта. Если да, то производится перезапуск веб-сервера, если нет, то опрос продолжается.</p>
4 <p>Идея решения тривиальна. Нам понадобится отдельная программа, которая с небольшой периодичностью опрашивает файлы в указанной папке и проверяет, изменились ли они со времени последнего рестарта. Если да, то производится перезапуск веб-сервера, если нет, то опрос продолжается.</p>
5 <p>У этого подхода два недостатка:</p>
5 <p>У этого подхода два недостатка:</p>
6 <ul><li>Наличие задержки. Даже если файлов немного, такой подход не позволяет реагировать на изменения сразу.</li>
6 <ul><li>Наличие задержки. Даже если файлов немного, такой подход не позволяет реагировать на изменения сразу.</li>
7 <li>Большая задержка и серьезная нагрузка при большом количестве файлов.</li>
7 <li>Большая задержка и серьезная нагрузка при большом количестве файлов.</li>
8 </ul><h2>Подписка на события ФС</h2>
8 </ul><h2>Подписка на события ФС</h2>
9 <p>Недостаток у этого способа только один, его сложно назвать фатальным. Этот способ работает не везде. А в остальном, такой подход очень эффективен и быстр.</p>
9 <p>Недостаток у этого способа только один, его сложно назвать фатальным. Этот способ работает не везде. А в остальном, такой подход очень эффективен и быстр.</p>
10 <h2>Nodemon</h2>
10 <h2>Nodemon</h2>
11 <p>nodemon - это программа для рестарта при изменениях фс.</p>
11 <p>nodemon - это программа для рестарта при изменениях фс.</p>
12 <h3>Установка</h3>
12 <h3>Установка</h3>
13 <h3>Запуск</h3>
13 <h3>Запуск</h3>
14 <p>По умолчанию nodemon смотрит файлы в текущей рабочей директории. Это поведение можно поменять так: nodemon --watch app --watch libs app/server.js.</p>
14 <p>По умолчанию nodemon смотрит файлы в текущей рабочей директории. Это поведение можно поменять так: nodemon --watch app --watch libs app/server.js.</p>