Node.js
Логотип программы Node.js
Тип фреймворк приложения[вд], свободное и открытое программное обеспечение, среда выполнения, JavaScript runtime[вд] и WebAssembly runtime[вд]
Разработчики OpenJS Foundation[вд] и Райан Даль
Написана на C++, C, JavaScript
Операционные системы Linux, Windows[4], BSD[вд][4] и macOS[4]
Дата выпуска 27 мая 2009[1]
Последняя версия
Репозиторий github.com/nodejs/node
Состояние активное
Лицензия лицензия MIT[5]
Сайт nodejs.org (англ.)
Логотип Викисклада Медиафайлы на Викискладе

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)[6][7], однако технология не получила распространения.

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

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

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

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

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

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

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

Версии

править
Выпуск[13] Статус Кодовое имя Дата выпуска Окончание поддержки
Старая версия, не поддерживается: 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[14] 2015-09-08 2018-04-30
Старая версия, не поддерживается: 5.x Старая версия, не поддерживается: End-of-Life 2015-10-29 2016-06-30
Старая версия, не поддерживается: 6.x Старая версия, не поддерживается: End-of-Life Boron[14] 2016-04-26 2019-04-30
Старая версия, не поддерживается: 7.x Старая версия, не поддерживается: End-of-Life 2016-10-25 2017-06-30
Старая версия, не поддерживается: 8.x Старая версия, не поддерживается: End-of-Life Carbon[14] 2017-05-30 2019-12-31
Старая версия, не поддерживается: 9.x Старая версия, не поддерживается: End-of-Life 2017-10-01 2018-06-30
Старая версия, не поддерживается: 10.x Старая версия, не поддерживается: End-of-Life Dubnium[14] 2018-04-24 2021-04-30
Старая версия, не поддерживается: 11.x Старая версия, не поддерживается: End-of-Life 2018-10-23 2019-06-01
Старая версия, не поддерживается: 12.x Старая версия, не поддерживается: End-of-Life Erbium[14] 2019-04-23 2022-04-30
Старая версия, не поддерживается: 13.x Старая версия, не поддерживается: End-of-Life 2019-10-22 2020-06-01
Старая версия, не поддерживается: 14.x Старая версия, не поддерживается: End-of-Life Fermium[14] 2020-04-21 2023-04-30
Старая версия, не поддерживается: 15.x Старая версия, не поддерживается: End-of-Life 2020-10-20 2021-06-01
Старая версия, не поддерживается: 16.x Старая версия, не поддерживается: End-of-Life Gallium[14] 2021-04-20 2023-09-11[15]
Старая версия, не поддерживается: 17.x Старая версия, не поддерживается: End-of-Life 2021-10-19 2022-06-01
Старая версия, не поддерживается: 18.x Старая версия, не поддерживается: End-of-Life Hydrogen[14] 2022-04-19 2025-04-30
Старая версия, не поддерживается: 19.x Старая версия, не поддерживается: End-of-Life 2022-10-18 2023-06-01
Старая поддерживаемая версия: 20.x Старая поддерживаемая версия: Maintenance LTS Iron[16] 2023-04-18 2026-04-30
Старая версия, не поддерживается: 21.x Старая версия, не поддерживается: End-of-Life [14] 2023-10-17 2024-06-01
Старая поддерживаемая версия: 22.x Старая поддерживаемая версия: Maintenance LTS Jod [16][14] 2024-04-24 2027-04-30
Старая версия, не поддерживается: 23.x Старая версия, не поддерживается: End-of-Life [14] 2024-10-15 2025-06-01
Текущая версия: 24.x Текущая версия: Active LTS Krypton [16] 2025-04-22 2028-04-30
Тестовая версия: 25.x Тестовая версия: Current 2025-10-15[17] 2026-06-01
Будущая версия: 26.x Будущая версия: Planned Lithium[16] 2026 2029
Будущая версия: 28.x Будущая версия: Planned Magnesium [16] 2027 2030
Будущая версия: 30.x Будущая версия: Planned Neon[16] 2028 2031
Будущая версия: 32.x Будущая версия: Planned Oxygen[16] 2029 2032
Будущая версия: 34.x Будущая версия: Planned Platinum[16] 2030 2033
Легенда:
Старая версия, не поддерживается
Старая поддерживаемая версия
Текущая версия
Тестовая версия
Будущая версия

Примеры кода

править

Создание и запуск 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
  • EventMachine — на языке Ruby
  • Secure Scuttlebutt — протокол одноранговых сетей и социальная сеть с ячеистой топологией, написанный на JavaScript с применением Node.js

Примечания

править
  1. node-v0.x-archive on GitHub
  2. Release 26.3.0 — 2026.
  3. nodejs Release 2026-01-13, Version 24.13.0 'Krypton' (LTS), @marco-ippolito · nodejs/node (англ.)
  4. 1 2 3 Free Software Directory
  5. node/LICENSE at master · nodejs/node · GitHub
  6. Server-Side JavaScript — Archive of obsolete content | MDN. Дата обращения: 4 июня 2016. Архивировано из оригинала 22 ноября 2018 года.
  7. Серверный JavaScript 1.4. Руководство по Использованию. Дата обращения: 4 июня 2016. Архивировано 25 июня 2016 года.
  8. io.js объединяется с NodeJS. Дата обращения: 10 сентября 2015. Архивировано 5 сентября 2015 года.
  9. Node.js + Io.js = Node.js 4.0.0. Дата обращения: 10 сентября 2015. Архивировано 10 сентября 2015 года.
  10. Вышла в свет новая версия Node.js v4.0.0. Дата обращения: 10 сентября 2015. Архивировано 10 сентября 2015 года.
  11. Node.js: The Road to Workers by Anna Henningsen. Дата обращения: 7 сентября 2019. Архивировано 1 мая 2020 года.
  12. Тимур Шемсединов. Разделяемая память в многопоточном Node.js. JS Fest 2019 Spring. Дата обращения: 7 сентября 2019. Архивировано 11 ноября 2020 года.
  13. Releases. Node.js (23 августа 2023).
  14. 1 2 3 4 5 6 7 8 9 10 11 nodejs/Release (англ.). GitHub. Дата обращения: 3 мая 2018. Архивировано 3 мая 2018 года.
  15. Bringing forward the End-of-Life Date for Node.js 16, Node.js Website
  16. 1 2 3 4 5 6 7 8 Node.JS CODENAMES.md (англ.). GitHub. Дата обращения: 6 сентября 2023.
  17. Node.js — Node.js v25.0.0 (Current) (брит. англ.). nodejs.org. Дата обращения: 21 октября 2025.

Литература

править
  • Брэд Дейли, Брендан Дейли, Калеб Дейли. Разработка веб-приложений с помощью 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.

Ссылки

править

📚 Artikel Terkait di Wikipedia

Next.js

часть логики на сервер вместо отправки JavaScript-кода клиенту. Официальный сайт: https://nextjs.org/ Плюсы Server Side Rendering: https://medium

XPages

на языках веб разработки и стандартах JavaScript, Ajax, Java, Dojo Toolkit, Server-side JavaScript и JavaServer Faces. XPages использует IBM Lotus Notes

MongoDB

Архивировано 16 сентября 2020 года. MongoDB Issues New Server Side Public License for MongoDB Community Server. MongoDB (амер. англ.). 16 октября 2018. Архивировано

Rhino

использования в server-side приложениях, поэтому в нём нет встроенной поддержки для объектов браузера, которые обычно ассоциируются с JavaScript. Rhino может

Vue.js

Vue.js (также Vue; /vjuː/) — JavaScript-фреймворк с открытым исходным кодом для создания пользовательских интерфейсов. Легко интегрируется в проекты с

Серверные сценарии

англ. server-side rendering, SSR). При серверном рендеринге статический HTML может быть отправлен с сервера клиенту, а затем клиентский JavaScript делает

Vaadin

разрабатываемый одноимённой финской компанией. В отличие от библиотек на JavaScript и специфических плагинов для браузеров, Vaadin предлагает сервер-ориентированную

Прогрессивное веб-приложение

решение — PWA Studio. Однако в нём до сих пор не реализована технология SSR (server-side rendering), что позволило бы выдавать поисковой системе готовую страницу