Я только что закончил свой второй модуль в школе Flatiron и начал изучать Javascript. Теперь, когда я направляюсь в мир Javascript, я хотел узнать больше о платформах, использующих JS. Очевидно, что одним из самых крупных является Node.js, но что это такое?

Определение на жаргоне гласит:

Node.js — это платформа, созданная на основе среды выполнения JavaScript Chrome, позволяющая легко создавать быстрые и масштабируемые сетевые приложения. Node.js использует управляемую событиями неблокирующую модель ввода-вывода, которая делает ее легкой и эффективной, идеально подходящей для приложений реального времени, интенсивно использующих данные, которые работают на распределенных устройствах.

Но что это вообще значит? Давайте разберем его, сначала обсудив, как работают традиционные фреймворки.

Обычная задача большинства веб-серверов — открыть файл на сервере и вернуть содержимое клиенту. Во-первых, типичные платформы веб-серверов, такие как PHP или ASP, обрабатывают эти запросы следующим образом: 1) отправляют задачу в файловую систему компьютера, 2) ждут, пока система открывает файл и читает его, 3) возвращают контент клиенту и 4) подготовиться к обработке следующего запроса. Это может быть длительным процессом, если вы представляете себе ожидание, пока система найдет и прочитает файл. По сути, каждый запрос заставляет сервер создавать новый системный процесс для обработки запроса. Этот процесс называется синхронным: ввод и вывод обрабатываются функцией, которая считывает файл и возвращает информацию только тогда, когда файл полностью прочитан.

Чтобы улучшить это, был создан Ajax (асинхронный JavaScript и XML), позволяющий веб-страницам обновляться асинхронно. Что значит асинхронно? По сути, AJAX позволяет обновлять части веб-страницы без перезагрузки всей страницы. Согласно Eloquent Javascript, асинхронный интерфейс позволяет сценарию продолжать работу, пока он выполняет свою работу, и вызывает функцию обратного вызова, когда это делается. Теперь AJAX — это не компьютерный язык, это просто комбинация инструментов веб-разработки, которые позволяют мгновенно обновлять страницы такого рода без полной обработки. Он использует Javascript и HTML, чтобы сделать это волшебство возможным.

Важно отметить, что AJAX на самом деле является инструментом на стороне клиента. Он похож на Node.js только тем, что оба они используют Javascript для достижения своих целей и оба являются асинхронными инструментами.

Node.js считается серверным инструментом. Node.js больше похож на Ruby on Rails и Apache/PHP. Итак, вернемся к главному вопросу: что такое Node.js? Проще говоря, это среда выполнения. Другими словами, это среда Javascript с открытым исходным кодом для создания сетевых приложений. Другими словами, это сервер, который использует Javascript и использует управляемую событиями неблокирующую модель ввода-вывода для обработки приложений с интенсивным использованием данных в реальном времени. Это делает Node.js легким, масштабируемым и быстрым.

Вот здесь-то и вступает в игру часть этого жаргона: в частности, неблокирующий и управляемый событиями. То, что эти термины означают в данном контексте, менее сложно, чем вы можете опасаться. Думайте о неблокирующем сервере как о цикле: он просто продолжает работать по кругу. Приходит запрос, цикл захватывает его, передает какому-то другому процессу (например, запросу к базе данных), устанавливает обратный вызов и продолжает цикл, готовый к следующему запросу. Он не просто сидит там, ожидая, пока база данных вернет запрошенную информацию. — Луи Симоно (Статья на сайте)

Вспомните, как ASP/PHP синхронно обрабатывает запросы со стороны клиента. Сравните это с Node.js, который при получении запроса делает следующее:

  1. Отправляет задание в файловую систему компьютера.
  2. Готов обработать следующий запрос.
  3. Когда файловая система открыла и прочитала файл, сервер возвращает содержимое клиенту.

Таким образом, Node.js устраняет ожидание при обработке запроса и может одновременно выполнять другие запросы. Эта статья неплохо объясняет особенности и преимущества Node.js по сравнению с традиционными веб-серверами.

Настоящая красота Node.js заключается в том, что он позволяет вам выполнять задачи, которые в противном случае были бы невозможны с обычным Javascript на стороне клиента, например, например. общение с базой данных. Некоторые ключевые задачи включают в себя:

  • Создание динамического контента на странице
  • Создание, чтение, запись, закрытие и удаление файлов на сервере
  • Сбор данных формы
  • Добавление, изменение и удаление данных в базе данных

Где Node действительно хорош, так это в создании быстрых, масштабируемых сетевых приложений, поскольку он способен обрабатывать огромное количество одновременных подключений с высокой пропускной способностью, что соответствует высокой масштабируемости.

Вот хороший список способов использования этого фреймворка, подробно описанных Node.js:

Во фреймворке Node.js много сложностей, которые я пока не могу подробно описать. Но просто обратите внимание, что его использование сегодня имеет решающее значение для многих реальных приложений, включая Uber, Netflix, Medium, LinkedIn и PayPal.

Я надеюсь, что когда я лучше пойму, что может сделать Node.js, я смогу начать больше узнавать о современных стеках приложений, таких как MEAN и MERN, которые используют Javascript от внешнего интерфейса до внутреннего для построения динамических приложений. веб-приложения.

Источники: W3Schools, Nodejs.org.