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 разработал Райан Даль в 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
Примечания
- ↑ node-v0.x-archive on GitHub
- ↑ Release 26.5.1 (англ.) — 2026.
- ↑ nodejs Release 2026-01-13, Version 24.13.0 'Krypton' (LTS), @marco-ippolito · nodejs/node (англ.)
- ↑ 1 2 3 Free Software Directory
- ↑ node/LICENSE at master · nodejs/node · GitHub
- ↑ Server-Side JavaScript — Archive of obsolete content | MDN. Дата обращения: 4 июня 2016. Архивировано из оригинала 22 ноября 2018 года.
- ↑ Серверный JavaScript 1.4. Руководство по Использованию. Дата обращения: 4 июня 2016. Архивировано 25 июня 2016 года.
- ↑ io.js объединяется с NodeJS. Дата обращения: 10 сентября 2015. Архивировано 5 сентября 2015 года.
- ↑ Node.js + Io.js = Node.js 4.0.0. Дата обращения: 10 сентября 2015. Архивировано 10 сентября 2015 года.
- ↑ Вышла в свет новая версия Node.js v4.0.0. Дата обращения: 10 сентября 2015. Архивировано 10 сентября 2015 года.
- ↑ Node.js: The Road to Workers by Anna Henningsen. Дата обращения: 7 сентября 2019. Архивировано 1 мая 2020 года.
- ↑ Тимур Шемсединов. Разделяемая память в многопоточном Node.js. JS Fest 2019 Spring. Дата обращения: 7 сентября 2019. Архивировано 11 ноября 2020 года.
- ↑ Releases. Node.js (23 августа 2023).
- ↑ 1 2 3 4 5 6 7 8 9 10 11 nodejs/Release (англ.). GitHub. Дата обращения: 3 мая 2018. Архивировано 3 мая 2018 года.
- ↑ Bringing forward the End-of-Life Date for Node.js 16, Node.js Website
- ↑ 1 2 3 4 5 6 7 8 Node.JS CODENAMES.md (англ.). GitHub. Дата обращения: 6 сентября 2023.
- ↑ 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.
Ссылки
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.