Nodejs — это кроссплатформенная (реализованная на нескольких компьютерных платформах) среда выполнения с открытым исходным кодом для выполнения кода JavaScript вне браузера. Раньше мы использовали JavaScript только на стороне клиента. Но теперь мы можем использовать JavaScript и на стороне сервера с помощью Nodejs. Все, что мы можем сделать с помощью php, c# для создания внутренних сервисов, теперь легко делается и с помощью Nodejs.

Что особенного в Nodejs по сравнению с другими инструментами и фреймворками для создания серверной части, такими как RAILS, DJANGO…..

#Nodejs очень легко начать.

#Отлично подходит для прототипирования и гибкой разработки.

# Также используется для создания сверхбыстрых и масштабируемых сервисов.

#Он используется в производстве такими крупными компаниями, как PayPal, Netflix, Uber, Walmart и так далее…

Архитектура Nodejs

В каждом веб-браузере есть механизм JavaScript, который берет наш код JavaScript и преобразует его в код, понятный компьютеру. Например, Microsoft EdgeиспользуетChakra, Firefoxиспользует > Spidermonkey и Chrome используют движок v8.

В 2009 году Райану Далю, создателю Nodejs, пришла в голову идея, он думал, что будет здорово выполнять JavaScript вне браузера. Поэтому он взял движок Google v8, который является самым быстрым движком JavaScript, встроил его в программу на C++ и назвал эту программу «Nodejs». Так похожий на браузер, Nodejs — это среда выполнения кода JavaScript. Он содержит механизм JavaScript, который может выполнять наш код JavaScript, но эти объекты отличаются от объектов среды, которые есть в браузерах. Например, у нас нет объекта document(document.getElementbyId(' ')) вместо этого у нас есть объекты, которые могут работать с файловыми системами (fs.readFile()), прослушивать запросы (http.createServer()) и так далее. Мы не можем делать эти вещи внутри браузера.

Nodejs — это программа, включающая в себя движок JavaScript V8, а также некоторые дополнительные модули, которые дают нам возможности, недоступные внутри браузеров, мы можем работать с файловой системой или сетью и так далее. И Chrome, и Nodejs используют один и тот же движок JS, но предоставляют разные среды выполнения для JS.



Один поток выделяется для обработки нескольких запросов в Nodejs. Это называется неблокирующей асинхронной архитектурой. Поэтому запросы не хотят ждать так долго.

Когда приходит запрос, этот единственный поток используется для обработки этого запроса, если нам нужно запросить базу данных или потоку не нужно ждать, пока база данных вернет данные. Пока база данных выполняет наш запрос, этот поток будет использоваться для обслуживания другого клиента. Когда база данных подготавливает результат, она помещает сообщение в то, что мы называем очередью событий. Node постоянно отслеживает эту очередь в фоновом режиме. Когда он находит событие в этой очереди, он извлекает событие и обрабатывает его. Архитектура такого типа делает Node идеальной для создания приложений, включающих большой объем дискового или сетевого доступа. Мы можем обслуживать больше клиентов без необходимости устанавливать дополнительное оборудование.