Расположение серверов
Расположение серверов
Расположение серверов
Расположение серверов
Расположение серверов
Расположение серверов
Node.js - это кроссплатформенная среда выполнения JavaScript с открытым исходным кодом, работающая на серверах. С момента своего выпуска в 2009 году эта платформа стала чрезвычайно популярной и в наши дни играет очень важную роль в области веб-разработки. Если рассматривать количество звезд, набранных проектом на GitHub, как показатель популярности, то Node.js, имеющий более 50 000 звезд, является очень и очень популярным проектом.
Платформа Node.js построена на движке Google V8 JavaScript, который используется в браузере Google Chrome. Эта платформа в основном используется для создания веб-серверов, но ее возможности не ограничиваются этим.
Давайте посмотрим на основные возможности Node.js.
Скорость
Одно из главных достоинств Node.js - скорость. Код JavaScript, выполняемый в Node.js, может быть в два раза быстрее кода, написанного на компилируемых языках, таких как C или Java, и на порядки быстрее, чем интерпретируемые языки, такие как Python или Ruby. Причина этого - неблокирующая архитектура платформы, а конкретные результаты зависят от используемых тестов, но в целом Node.js - очень быстрая платформа.
Простота
Платформа Node.js проста в освоении и использовании. На самом деле, это очень просто, особенно по сравнению с некоторыми другими серверными платформами.
JavaScript
JavaScript выполняется в среде Node.js. Это означает, что миллионы интерфейсных разработчиков, которые уже используют JavaScript в браузере, могут писать как серверный, так и клиентский код на одном языке программирования, без необходимости изучать совершенно новый инструмент для перехода к серверной разработке.
Браузер и сервер используют одни и те же языковые концепции. Кроме того, Node.js может быстро перейти на новые стандарты ECMAScript, поскольку они реализованы на платформе.
Для этого не нужно ждать, пока пользователи обновят свои браузеры, поскольку Node.js - это серверная среда, полностью контролируемая разработчиком. В результате новые языковые функции становятся доступными при установке поддерживающей версии Node.js.
Двигатель V8
В основе Node.js, среди других решений, лежит движок Google V8 JavaScript с открытым исходным кодом, который используется в Google Chrome и других браузерах. Это означает, что Node.js пользуется преимуществами тысяч инженеров, которые сделали среду выполнения JavaScript Chrome невероятно быстрой и продолжают работать над улучшением V8.
Асинхронность
В традиционных языках программирования (C, Java, Python, PHP) все инструкции по умолчанию блокируются, если только разработчик явно не позаботится об асинхронном выполнении кода. В результате, если, например, в такой среде вы делаете сетевой запрос на загрузку некоторого кода JSON, выполнение потока, из которого сделан запрос, будет приостановлено до тех пор, пока ответ не будет получен и обработан.
JavaScript значительно упрощает написание асинхронного и неблокирующего кода с использованием одного потока, обратных вызовов и подхода к разработке, основанного на событиях. Каждый раз, когда нам нужно выполнить тяжелую операцию, мы передаем обратный вызов соответствующему механизму, который будет вызываться сразу после завершения этой операции. В результате нет необходимости ждать результатов таких операций, чтобы программа продолжила работу.
Похожий механизм зародился в браузерах. Мы не можем позволить себе ждать, скажем,AJAXзапрос на завершение без возможности реагировать на действия пользователя, такие как нажатия кнопок. Чтобы пользователям было удобно работать с веб-страницами, все, как загрузка данных из сети, так и обработка нажатий кнопок, должно происходить одновременно, в реальном времени.
Если вы когда-либо создавали обработчик событий нажатия кнопки, вы уже использовали методы асинхронного программирования.
Асинхронные механизмы позволяют одному серверу Node.js одновременно обрабатывать тысячи соединений, не обременяя программиста задачами управления потоками и параллельного выполнения кода. Такие вещи часто являются источником ошибок.
Node.js предоставляет разработчику неблокирующие базовые механизмы ввода-вывода, и в целом библиотеки, используемые в платформе Node.js, написаны с использованием неблокирующих парадигм.Это делает поведение блокировки скорее исключением, чем нормой.
Когда Node.js необходимо выполнить операцию ввода-вывода, такую как загрузка данных из сети, доступ к базе данных или файловой системе, вместо блокировки основного потока, ожидающего результатов такой операции, Node.js инициирует ее выполнение и продолжайте делать другие вещи, пока не будут получены результаты этой операции.
Библиотеки
Благодаря простоте и удобству работы с менеджером пакетов для Node.js под названием npm, экосистема Node.js процветает. Сейчас в реестре npm имеется более полумиллиона пакетов с открытым исходным кодом, которые любой разработчик Node.js может свободно использовать.
Ознакомившись с некоторыми из основных функций платформы Node.js, давайте попробуем ее в действии. Начнем с установки.
Установка Node.js
Node.js можно установить разными способами, о которых мы поговорим чуть позже. Итак, официальные установочные пакеты для всех основных платформ можно найти.
Существует еще один очень удобный способ установки Node.js - использовать диспетчер пакетов, предусмотренный в операционной системе. Например, менеджер пакетов macOS, который де-факто является стандартом в этой области, называется Homebrew.
Если он у вас есть в вашей системе, вы можете установить Node.js, выполнив эту команду в командной строке:
узел установки brew
Список менеджеров пакетов для других операционных систем, включая Linux и Windows, можно найти здесь.
Популярным менеджером версий Node.js является nvm. Этот инструмент позволяет удобно переключаться между разными версиями Node.js, с его помощью вы можете, например, установить и опробовать новую версию Node.js, а затем, при необходимости, вернуться к старой. Nvm также полезен в ситуации, когда вам нужно протестировать код на старой версии Node.js.
Для новичков использовать официальные установщики Node.js. Пользователям macOS рекомендуется устанавливать Node.js с помощью Homebrew. Теперь, когда вы установили Node.js, пора написать «Hello World».
Первое приложение Node.js
Самый распространенный пример первого приложения Node.js - это простой веб-сервер. Вот его код:
const http = require ('http')
const hostname = '127.0.0.1'
const порт = 3000
const server = http.createServer ((req, res) = & gt; {
res.statusCode = 200
res.setHeader ('Content-Type', 'текст / простой')
res.end ('Привет, мир \ n')
})
server.listen (порт, имя хоста, () = & gt; {
console.log (`Сервер работает по адресу http: // $ {hostname}: $ {port} /`)
})
Чтобы запустить этот код, сохраните его в файле server.js и выполните в терминале следующую команду:
узел server.js
Для проверки сервера откройте браузер и введите в адресной строке http://127.0.0.1:3000, то есть адрес сервера, который будет отображаться в консоли после его успешного запуска. Если все работает как надо, на странице отобразится «Hello World».
Посмотрим на этот пример.
Во-первых, обратите внимание, что код содержит команду для подключения модуля HTTP.
Платформа Node.js имеет отличный стандартный набор модулей, включающий в себя хорошо проработанные механизмы работы с сетью.
Метод объекта http createServer () создает новый HTTP-сервер и возвращает его.
Сервер настроен на прослушивание определенного порта на определенном хосте. Когда сервер готов, вызывается соответствующий обратный вызов, информирующий нас о том, что сервер запущен.
Когда сервер получает запрос, запускается событие запроса, который предоставляет два объекта. Первый - это запрос (req, объект http.IncomingMessage), второй - это ответ (res, объект http.ServerResponse). Они являются наиболее важными механизмами для обработки HTTP-запросов.
Первый предоставляет нам информацию о запросе. В нашем простом примере мы не используем эти данные, но, при необходимости, используя объект, reqyou может получить доступ к заголовкам запроса и переданным в нем данным.
Второй нужен для формирования и отправки ответа на запрос.
В этом случае мы формируем ответ на запрос следующим образом. Сначала мы устанавливаем код состояния свойства равным 200, что указывает на успешную операцию:
res.statusCode = 200
Затем мы устанавливаем заголовок Content-Type:
res.setHeader ('Content-Type', 'текст / простой')
Затем мы завершаем подготовку ответа, добавляя его содержимое в качестве аргумента метода end ():
res.end ('Привет, мир \ n')
Мы уже упоминали, что вокруг платформы Node.js. сформировалась мощная экосистема. Давайте теперь обсудим некоторые популярные фреймворки и вспомогательные инструменты для Node.js.
Фреймворки и вспомогательные инструменты для Node.js
Node.js - это платформа низкого уровня. Чтобы упростить для него разработку и облегчить жизнь программистам, создано огромное количество библиотек. Некоторые из них со временем стали очень популярными. Вот небольшой список библиотек, которые, как мне кажется, сделаны хорошо и заслуживают изучения:
Экспресс: Эта библиотека предоставляет разработчику чрезвычайно простой, но мощный инструмент для создания веб-серверов. Ключом к успеху Express был минималистский подход и сосредоточение внимания на базовых механизмах на стороне сервера без попытки навязывать видение «универсальной» серверной архитектуры.
Метеор: Это мощный полнофункциональный фреймворк, использующий изоморфный подход для разработки приложений JavaScript и использующий код как на клиенте, так и на сервере. Когда-то Meteor был автономным инструментом, включающим все, что могло понадобиться разработчику. Теперь он также интегрируется с интерфейсными библиотеками, такими как React, Vue и Angular. Meteor, помимо разработки обычных веб-приложений, также может использоваться в мобильной разработке.
Коа: Эта веб-платформа создана той же командой, что и Express. Основываясь на многолетнем опыте работы с Express, он был разработан с упором на простоту и компактность. Этот проект возник как решение проблемы внесения в Express серьезных изменений, несовместимых с другими механизмами фреймворка, которые могут расколоть сообщество.
Next.js: Этот фреймворк предназначен для организации рендеринга приложений React на стороне сервера.
Микро: Это очень легкая библиотека для создания асинхронных микросервисов HTTP.
Socket.io. Это библиотека для разработки сетевых приложений в реальном времени.
Фактически, в экосистеме Node.js вы можете найти вспомогательную библиотеку практически для любой задачи. Как вы понимаете, создание такой экосистемы занимает много времени. Платформа Node.js появилась в 2009 году. За время ее существования произошло много чего, что должно быть известно программисту, желающему изучить эту платформу.
Краткая история Node.js
Node.js в этом году исполняется 9 лет. Это, конечно, не так много, когда вы сравниваете этот возраст с возрастом JavaScript, которому уже 23 года, или с 25-летним возрастом Интернета, как мы его знаем, если считать от появления мозаики. браузер.
9 лет - короткий срок для технологий, но сейчас кажется, что платформа Node.js существовала всегда.
С Node.js из ранних версий платформы, когда ему было всего 2 года. Уже тогда, несмотря на то, что информации о Node.js было не так много, уже можно было почувствовать, что Node.js очень серьезен.
Теперь поговорим о технологиях, лежащих в основе Node.js, и кратко рассмотримосновные разработки, связанные с этой платформой.
Итак, JavaScript - это язык программирования, который был создан в Netscape как язык сценариев для управления веб-страницами в браузере Netscape Navigator.
Часть бизнеса Netscape заключалась в продаже веб-серверов, которые включали среду под названием Netscape LiveWire. Это позволило вам создавать динамические веб-страницы с использованием серверного JavaScript.
идея использования JS для разработки на стороне сервера намного старше, чем Node.js. Эта идея почти так же стара, как сам JavaScript, но в то время серверный JS не был популярен.
Одним из ключевых факторов, сделавших платформу Node.js такой широкой и популярной, является ее первое появление. Итак, несколькими годами ранее JavaScript начал считаться серьезным языком. Это произошло благодаря приложениям Web 2.0, таким как Google Maps или Gmail, которые продемонстрировали миру мощь современных веб-технологий.
Благодаря конкурентной войне браузеров, которая продолжается по сей день, производительность движков JavaScript значительно выросла. Команды разработчиков основных браузеров ежедневно работают над улучшением производительности своих решений, что благотворно влияет на JavaScript в целом.
Одним из таких движков является уже упомянутый V8, используемый в браузере Chrome и используемый в Node.js. Это один из результатов стремления разработчиков браузеров к высокопроизводительному коду JavaScript.
Конечно, популярность Node.js основана не только на удачном совпадении, но и на том, что платформа родилась в нужное время. Она познакомила мир с инновационным подходом к разработке серверного JavaScript. Давайте посмотрим на основные вехи в истории Node.js.
2009
Появление Node.js
Делаем первый вариант npm.
2010
Внешний вид Express.
Появление Socket.io.
2011
Релиз Npm 1.0.
Крупные компании, такие как LinkedIn и Uber, начали использовать Node.js.
2012
Быстрый рост популярности Node.js.
2013
Появление Ghost, первой крупной платформы для публикаций с использованием Node.js.
Релиз Коа.
2014
В этом году произошли драматические события. Появился проект IO.js, который является форком Node.js, целью которого, помимо прочего, было внедрение поддержки ES6 и ускорение разработки платформы.
2015
Основание фонда Node.js.
Слияние IO.js и Node.js.
В npm появилась возможность работать с приватными модулями.
Получите Node.js 4 (следует отметить, что версий 1, 2 и 3 с платформы не было).
2016
Инцидент с левой подушкой.
Появление пряжи.
Выпуск Node.js 6.
2017
Npm начинает уделять больше внимания безопасности.
Выпуск Node.js 8
Появление поддержки HTTP / 2.
V8 официально признан JS-движком, разработанным не только для Chrome, но и для Node.
Каждую неделю скачивается 3 миллиарда npm.
2018
Выпуск Node.js 10.
Поддержка модулей ES.
Экспериментальная поддержка mjs.