Node.js
Node.js – популярная программная платформа с открытым исходным кодом, превращающая JavaScript из узкоспециализированного инструмента в универсальный язык программирования для создания кросс-платформенных приложений.
Платформу создал Райан Дал, а спонсором разработки выступила компания Joyent. Среда Node.js была представлена в 2009 году.
Чаще всего платформу используют для написания серверной части сайта, однако сейчас на нём пишут и десктопные программы.
Node.js основана на движке V8: это программа, которая преобразует JavaScript в машинный код, то есть код понятный процессору. Этот же движок используется в основе браузера Google Chrome. Одного V8 для удобной работы мало, так как он может работать только с JavaScript.
Он не умеет читать файлы, не может работать с сетью вне браузера, поэтому Райан Дал вместе с разработчиками с помощью дополнительных библиотек и кода добавили дополнительные возможности к V8. Это позволило сделать из JavaScript веб-сервер.
Плюсы Node.js:
- Использование одного языка JavaScript как на клиентской стороне в браузере, так и на сервере.
- NPM (Node Package Manager) ― это менеджер пакетов, или набор готовых модулей. Это своеобразный склад, где программисты делятся своим кодом. Комьюнити очень большое, поэтому в NPM на данный момент собрано огромное количество решений для разных задач.
- Увеличение скорости работы. Вы можете читать файлы, отправлять электронные письма, запрашивать данные и совершать другие действия одновременно.
Как работает Node.js
Платформа работает по однопоточному принципу. При этом подходе все запросы делаются в рамках одного потока и веб-сервер не тратит время на ожидание ответа. Он посылает запросы и обрабатывает ответы по мере их поступления. Таким образом, веб-сервер всегда находится в работе, а не в процессе ожидания. Такой способ позволяет эффективно использовать ресурсы и выполнять команды намного быстрее.
Отличным примером является загрузка страницы сайта. Представьте, вы хотите загрузить страницу сайта. Веб-ресурс может показаться пользователю, как только браузер получит весь необходимый контент. При использовании обычного веб-сервера с многопоточной системой каждый файл (картинка, название, основной текст, фон) будет запрашиваться по отдельности. Например, сначала фон, затем, как только данные фона будут получены, веб-сервер отправит запрос на картинки и так далее. Из-за долгого ожидания ответа страница будет грузиться дольше. Node.js не тратит время на ожидание. Во время поиска фоновой картинки, платформа запросит другую картинку. За счёт этого сайт загрузится быстрее.
Чаще всего эту платформу используют для создания веб-сервисов, которые требуют интенсивного обмена информацией с пользователями, например, чатов, социальных сетей и подобных.
Платформа хорошо подходит для разработки RTA — веб-приложений, которые реагируют на действия пользователя в режиме реального времени. Например, это может быть онлайн-редактор типа Google Docs, который позволяет работать над одним документом нескольким пользователям одновременно.
Node.js, PHP или Python?
Node.js не такой популярный как PHP. На PHP написаны такие CMS как WordPress, Joomla, Drupal. И именно на этих системах управления работает большинство сайтов.
Популярными фреймворками Node.js являются:
- AdonisJs — это фреймворк, который работает на всех основных операционных системах. Он обладает стабильной экосистемой для написания серверных веб-приложений. Идеально подходит для разработчиков Laravel, которые пробуют переход на Node.js.
- Express.js — это самый простой, гибкий и быстрый фреймворк. Express.js подходит для быстрой разработки простых приложений, так как имеет легкодоступные инструменты генерации API.
- Koa.js — фреймворк, созданный командой Express.js. Разработчики хотели учесть все недостатки Express.js и создать более совершенный продукт. Koa работает в разных браузерах, без использования обратных вызовов и обладает мощной системой обработки ошибок. Может использоваться для фронтенд- и бэкэнд-системы.
Если сравнивать Python и Node, то их главное различие ― сфера применения. Node подходит для веб-разработки и некоторых десктопных программ, в то время как Python является универсальным решением. С его помощью можно сделать не только веб-разработку, но и Data Science, Machine Learning.