Interested Article - Node.js

Node или Node.js (читается: ноуд или ноуд-джей-эс ) — программная платформа, основанная на движке V8 (компилирующем JavaScript в машинный код ), превращающая JavaScript из узкоспециализированного языка в язык общего назначения. Node.js добавляет возможность JavaScript взаимодействовать с устройствами ввода-вывода через свой API , написанный на C++ , подключать другие внешние библиотеки, написанные на разных языках, обеспечивая вызовы к ним из JavaScript-кода. Node.js применяется преимущественно на сервере, выполняя роль веб-сервера , но есть возможность разрабатывать на Node.js и десктопные оконные приложения (при помощи NW.js , AppJS или Electron для Linux , Windows и macOS ) и даже программировать микроконтроллеры (например, tessel, low.js и Espruino ). В основе Node.js лежит событийно-ориентированное и асинхронное (или реактивное) программирование с неблокирующим вводом/выводом .

История

В 1996 году в компании Netscape были попытки создания серверного JavaScript (Server-side JavaScript — SSJS) , однако технология не получила распространения.

Райан Даль , создатель Node.js

Node.js разработал Райан Даль в 2009 году после двух лет экспериментирования над созданием серверных веб-компонентов. В ходе своих исследований он пришёл к выводу, что вместо традиционной модели параллелизма на основе потоков следует обратиться к событийно-ориентированным системам. Эта модель была выбрана из-за простоты, низких накладных расходов (по сравнению с идеологией «один поток на каждое соединение») и быстродействия. Целью Node является предложить «простой способ построения масштабируемых сетевых серверов».

Разработка Node.js спонсируется компанией .

В декабре 2014 года был создан форк io.js .

В мае 2015 года было принято решение о слиянии io.js и Node.js и дальнейшем развитии под эгидой Node.js Foundation .

8 сентября 2015 года вышел Node.js v4.0.0 как результат слияния Node.js v0.12.7 и io.js v3.3.0 .

Важными событиями в развитии платформы стало появление и в Node.js 9, а также в Node.js 10.5 (и существенное развитие в Node.js 12) . Это позволило создавать многопоточные параллельные приложения, реализовывать примитивы параллельного программирования и работать с разделяемой памятью .

Версии

Версия Статус Кодовое имя Дата выпуска Поддержка до
Старая версия, не поддерживается: 0.10.x Старая версия, не поддерживается: End-of-Life 2013-03-11 2016-10-31
Старая версия, не поддерживается: 0.12.x Старая версия, не поддерживается: End-of-Life 2015-02-06 2016-12-31
Старая версия, не поддерживается: 4.x Старая версия, не поддерживается: End-of-Life Argon 2015-09-08 2018-04-30
Старая версия, не поддерживается: 5.x Старая версия, не поддерживается: End-of-Life 2015-10-29 2016-06-30
Старая версия, не поддерживается: 6.x Старая версия, не поддерживается: End-of-Life Boron 2016-04-26 2019-04-30
Старая версия, не поддерживается: 7.x Старая версия, не поддерживается: End-of-Life 2016-10-25 2017-06-30
Старая версия, не поддерживается: 8.x Старая версия, не поддерживается: End-of-Life Carbon 2017-05-30 2019-12-31
Старая версия, не поддерживается: 9.x Старая версия, не поддерживается: End-of-Life 2017-10-01 2018-06-30
Старая версия, не поддерживается: 10.x Старая версия, не поддерживается: End-of-Life Dubnium 2018-04-24 2021-04-30
Старая версия, не поддерживается: 11.x Старая версия, не поддерживается: End-of-Life 2018-10-23 2019-06-01
Старая версия, не поддерживается: 12.x Старая версия, не поддерживается: End-of-Life Erbium 2019-04-23 2022-04-30
Старая версия, не поддерживается: 13.x Старая версия, не поддерживается: End-of-Life 2019-10-22 2020-06-01
Старая версия, не поддерживается: 14.x Старая версия, не поддерживается: End-of-Life Fermium 2020-04-21 2023-04-30
Старая версия, не поддерживается: 15.x Старая версия, не поддерживается: End of Life 2020-10-20 2021-06-01
Старая поддерживаемая версия: 16.x Старая поддерживаемая версия: Maintenance LTS Gallium 2021-04-20 2024-04-30
Старая версия, не поддерживается: 17.x Старая версия, не поддерживается: End-of-Life 2021-10-19 2022-06-01
Текущая версия: 18.x Текущая версия: Current LTS Hydrogen 2022-04-19 2025-04-30
Старая версия, не поддерживается: 19.x Старая версия, не поддерживается: End-of-Life 2022-10-18 2023-06-01
Старая поддерживаемая версия: 20.x Старая поддерживаемая версия: Maintenance Iron 2023-04-18 2026-04-30
Текущая версия: 21.x Текущая версия: Current 2023-10-17 2024-05-30
Будущая версия: 22.x Будущая версия: Planned Jod 2024-04-15 2027-04-28
Будущая версия: 23.x Будущая версия: Planned 2024-10-14 2025-05-27
Легенда:
Старая версия, не поддерживается
Старая поддерживаемая версия
Текущая версия
Тестовая версия
Будущая версия

Примеры кода

Создание и запуск HTTP -сервера на Node.js, выдающего Hello, world! :

// Подключение модуля http const http = require("http"); // Создаем веб-сервер с обработчиком запросов const server = http.createServer((incomingMessage, response) => { console.log("Начало обработки запроса"); // Передаем код ответа и заголовки http response.writeHead(200, { "Content-Type": "text/plain; charset=UTF-8" }); response.end("Hello, world!"); }); // Запускаем веб-сервер server.listen(80, "127.0.0.1", () => { const info = server.address(); console.log(`Сервер запущен ${info}`); }); 

Другой пример скрипта, создающего TCP -сервер, который прослушивает порт 8080 и выводит на экран всё, что вводит пользователь:

// Подключение модуля net const net = require("net"); // Создание TCP-сервера const server = net.createServer((stream) => { // Установка кодировки stream.setEncoding("utf-8"); // Объявление обработчика событий stream.on("data", (data) => { // Вывод данных в консоль console.log(data); }); }); // Запуск сервера server.listen(8080, "127.0.0.1"); 

Пакеты сторонних разработчиков

В состав Node.js входит собственный менеджер пакетов npm , который предоставляет возможности установки, публикации и поиска пакетов из репозитория npmjs.com. Все зависимости находятся в папке node_modules

Чтобы их использовать сначала нужно инициализировать node js проект

npm init 

Появятся файлы package.json и package-lock.json в которых будет информация о проекте и зависимостях Установка производится при помощи команды:

npm install <packagename> 

Все доступные для установки пакеты и их краткое описание:

npm search 

Этой же командой можно производить выборочный поиск пакетов.

Также можно установить все необходимые зависимости из файла package.json

npm install 

См. также

Список библиотек, реализующих концепцию событийно-ориентированного программирования:

  • Twisted — на языке Python
  • — на языке Ruby
  • Secure Scuttlebutt — протокол одноранговых сетей и социальная сеть с ячеистой топологией, написанный на JavaScript с применением Node.js

Примечания

  1. — 2023.
  2. — 2023.
  3. (неопр.) . Дата обращения: 4 июня 2016. Архивировано из 22 ноября 2018 года.
  4. (неопр.) Дата обращения: 4 июня 2016. 25 июня 2016 года.
  5. (неопр.) . Дата обращения: 10 сентября 2015. 5 сентября 2015 года.
  6. (неопр.) . Дата обращения: 10 сентября 2015. 10 сентября 2015 года.
  7. (неопр.) . Дата обращения: 10 сентября 2015. 10 сентября 2015 года.
  8. (неопр.) . Дата обращения: 7 сентября 2019. 1 мая 2020 года.
  9. (неопр.) . JS Fest 2019 Spring. Дата обращения: 7 сентября 2019. 11 ноября 2020 года.
  10. ↑ (англ.) . GitHub . Дата обращения: 3 мая 2018. 3 мая 2018 года.
  11. (неопр.) . Дата обращения: 27 апреля 2023. 27 апреля 2023 года.

Литература

  • Брэд Дейли, Брендан Дейли, Калеб Дейли. Разработка веб-приложений с помощью Node.js, MongoDB и Angular: исчерпывающее руководство по использованию стека MEAN = Web Development with Node and Express. — 2-е изд.. — Санкт-Петербург: « », 2020. — 656 с. — ISBN 978-5-6040044-8-7 .
  • Итан Браун. Веб-разработка с применением Node и Express. Полноценное использование стека JavaScript = Web Development with Node and Express / Итан Браун . — Санкт-Петербург: Питер, 2017. — 336 с. — ISBN 978-1-491-94930-6 .
  • Каскиаро М., Маммино Л. Шаблоны проектирования Node.js. — 2017. — С. 396. — ISBN 978-5-97060-485-4 .
  • Сухов К. К. Node.js. Путеводитель по технологии. — « », 2015. — С. 416. — ISBN 978-5-97060-164-8 .
  • Холмс С. Стек MEAN. Mongo, Express, Angular, Node. — СПб. : « Питер », 2017. — С. 496. — ISBN 978-5-496-02459-4 .
  • Пауэрс Ш. Изучаем Node. Переходим на сторону сервера. — 2-е изд.. — СПб. : « Питер », 2017. — С. 304. — ISBN 978-5-496-02941-4 .
  • Янг А., Мек Б., Кантелон М. Node.js в действии. — 2-е изд.. — СПб. : « Питер », 2018. — С. 432. — ISBN 978-5-496-03212-4 .

Ссылки

Same as Node.js