Node.js
| Node.js | |
|---|---|
| Тип | фреймворк приложения[вд], свободное и открытое программное обеспечение, среда выполнения и JavaScript 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!:
// Подключение модуля httpconsthttp=require("http");// Создаём веб-сервер с обработчиком запросовconstserver=http.createServer((incomingMessage,response)=>{console.log("Начало обработки запроса");// Передаём код ответа и заголовки httpresponse.writeHead(200,{"Content-Type":"text/plain; charset=UTF-8"});response.end("Hello, world!");});// Запускаем веб-серверserver.listen(80,"127.0.0.1",()=>{constinfo=server.address();console.log(`Сервер запущен${info}`);});
Другой пример скрипта, создающегоTCP-сервер, который прослушиваетпорт 8080 и выводит на экран всё, что вводит пользователь:
// Подключение модуля netconstnet=require("net");// Создание TCP-сервераconstserver=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 проект:
npminit
Появятся файлы package.json и package-lock.json, в которых будет информация о проекте и зависимостяхУстановка производится при помощи команды:
npminstall<packagename>
Все доступные для установки пакеты и их краткое описание:
npmsearch
Этой же командой можно производить выборочный поиск пакетов.
Также можно установить все необходимые зависимости из файла package.json:
npminstall
См. также
[править |править код]Список библиотек, реализующих концепцию событийно-ориентированного программирования:
- Twisted — на языкеPython
- EventMachine — на языкеRuby
- Secure Scuttlebutt — протокол одноранговых сетей и социальная сеть с ячеистой топологией, написанный на JavaScript с применением Node.js
Примечания
[править |править код]- ↑node-v0.x-archive on GitHub
- ↑nodejsRelease 2026-02-10, Version 25.6.1 (Current), @aduh95 (англ.)
- ↑nodejsRelease 2026-01-13, Version 24.13.0 'Krypton' (LTS), @marco-ippolito · nodejs/node (англ.)
- ↑123Free 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).
- ↑1234567891011nodejs/Release (англ.). GitHub. Дата обращения: 3 мая 2018. Архивировано 3 мая 2018 года.
- ↑Bringing forward the End-of-Life Date for Node.js 16, Node.js Website
- ↑12345678Node.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.
Ссылки
[править |править код]- Страницы, использующие устаревший тег source
- Википедия:Cite web (не указан язык)
- Википедия:Статьи со ссылками на элементы Викиданных без русской подписи
- Википедия:Статьи с источниками из Викиданных
- ПРО:ИТ:Статьи по алфавиту
- ПРО:ИТ:Последняя правка: в текущем году
- Страницы, использующие волшебные ссылки ISBN