2015-12-15 7 views
2

Зачем необходимо перезапустить сервер NodeJS при изменении файла? Нужны ли другие серверы, такие как Apache, IIS, nginx, или они могут перезапускаться автоматически?Почему сервер узла необходимо перезапустить при смене файла?

+3

Существует разница между файлами, которые способствуют определению поведения сервера (выполняется Node.js) и файлам, которые сервер может обслуживать до клиента. Если вы хотите загрузить и изменить исходный код для Apache или nginx, да, вам придется перезапустить (и перестроить) их, чтобы увидеть, как эти изменения вступают в силу. То же самое относится к сценариям, выполняемым Node.js. (Node.js не является сервером таким же образом, как Apache и т. Д. Это платформа, которая помогает вам определять собственные серверные приложения - собственный Apache и т. Д.). –

+0

Хотя вы должны понять, почему сервер необходимо перезапустить, вы можете использовать [nodemon] (https://www.npmjs.com/package/nodemon), чтобы обойти эту проблему. Это небольшой скрипт, который обнаруживает изменения файлов и соответственно перезапускает сервер (чрезвычайно полезен для сред разработчиков). – Matt

ответ

4

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

Для файлов Javascript, которые составляют ваш Javascript-код для вашего узла.js server, node.js является постоянно работающим сервером. Это означает, что когда сервер запускается, он анализирует ваш код Javascript в памяти и затем начинает его выполнять. Этот процесс сервера будет работать до тех пор, пока вы его не остановите. Поскольку node.js является постоянно работающим сервером, если вы хотите обновить файлы Javascript, составляющие код сервера, вам необходимо остановить сервер и перезапустить его, чтобы он загружал и повторно просматривал вновь измененные исходные файлы.

Это очень отличается от PHP с Apache, который запускает заданный PHP-скрипт с нуля для каждого отдельного запроса. Так как не существует давно работающего PHP-приложения, и каждый скрипт PHP запускается с нуля для каждого запроса, он автоматически может выбрать новый измененный PHP-скрипт без перезапуска сервера Apache. Если у вас был длинный сервер, полностью написанный на PHP, тогда он, вероятно, будет иметь подобное поведение, как node.js.

И если вы хотите обновить код сервера Apache, вам придется перезапустить Apache (как с node.js).

Вы можете думать о node.js как о Apache + PHP в одном, так как функции обоих обычно удовлетворяются только node.js сами по себе. Он объединяет функциональность веб-сервера с логикой webapp, в то время как они разделены с Apache + PHP.


Для HTML файлов или файлов JavaScript, которые обслуживаются сервером и доставленные в браузер, то, как правило, нет необходимости перезагружать сервер для новых версий этих файлов, которые будут при последующих запросах браузера. Но это немного зависит от используемой вами структуры сервера и того, как именно она реализует кеширование файлов. Это поведение не специфично для node.js, но будет встроено в любой код, который вы использовали для обслуживания файлов вашим веб-сервером (например, Express или что-то в этом роде).

+0

Спасибо за такое краткое объяснение. – rajagopalx

Смежные вопросы