Node.js: различия между версиями
[отпатрулированная версия] | [непроверенная версия] |
Нет описания правки |
Gromolyak (обсуждение | вклад) |
||
(не показано 13 промежуточных версий 9 участников) | |||
Строка 1: | Строка 1: | ||
{{Карточка программы |
{{Карточка программы |
||
⚫ | |||
| [[Стадии разработки программного обеспечения|последняя версия]] = 18.3.0 (Current), 16.15.1 ([[LTS]]) |
|||
⚫ | |||
| состояние = активное |
| состояние = активное |
||
}} |
}} |
||
'''Node''' или '''Node.js''' (читается: ''ноуд'' или ''ноуд- |
'''Node''' или '''Node.js''' (читается: ''ноуд'' или ''ноуд--эс'') — программная платформа, основанная на движке [[V8 (движок JavaScript)|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 лежит [[Событийно-ориентированное программирование|событийно-ориентированное]] и [[Реактивное программирование|асинхронное (или реактивное)]] программирование с [[Неблокирующая синхронизация|неблокирующим вводом/выводом]]. |
||
== История == |
== История == |
||
Строка 104: | Строка 103: | ||
|2020-06-01 |
|2020-06-01 |
||
|- |
|- |
||
|{{Version| |
|{{Version||14.x|show=}} |
||
|{{Version| |
|{{Version|||show=}} |
||
|[[Фермий|Fermium]]<ref name="Release" /> |
|[[Фермий|Fermium]]<ref name="Release" /> |
||
|2020-04-21 |
|2020-04-21 |
||
Строка 116: | Строка 115: | ||
|2021-06-01 |
|2021-06-01 |
||
|- |
|- |
||
|{{Version| |
|{{Version||16.x}} |
||
|{{Version| |
|{{Version||}} |
||
|[[Галлий|Gallium]]<ref name="Release16eol">{{Cite web |url=https://nodejs.org/en/blog/announcements/nodejs16-eol |title=Bringing forward the End-of-Life Date for Node.js 16 |access-date=2023-11-03 |deadlink=no |archive-date=2023-11-03 |archive-url=https://web.archive.org/web/20231103093116/https://nodejs.org/en/blog/announcements/nodejs16-eol |url-status=live }}</ref> |
|||
|[[Галлий|Gallium]]<ref name="Release" /> |
|||
|2021-04-20 |
|2021-04-20 |
||
| |
|-- |
||
|- |
|- |
||
|{{Version|o|17.x}} |
|{{Version|o|17.x}} |
||
Строка 128: | Строка 127: | ||
|2022-06-01 |
|2022-06-01 |
||
|- |
|- |
||
|{{Version| |
|{{Version||18.x}} |
||
|{{Version| |
|{{Version|| LTS}} |
||
|[[Водород|Hydrogen]]<ref name="ReleaseNames">{{Cite web |url=https://github.com/nodejs/Release/blob/main/CODENAMES.md |title=Release codenames |access-date=2023-04-27 |archive-date=2023-04-27 |archive-url=https://web.archive.org/web/20230427093452/https://github.com/nodejs/Release/blob/main/CODENAMES.md |deadlink=no }}</ref> |
|[[Водород|Hydrogen]]<ref name="ReleaseNames">{{Cite web |url=https://github.com/nodejs/Release/blob/main/CODENAMES.md |title=Release codenames |access-date=2023-04-27 |archive-date=2023-04-27 |archive-url=https://web.archive.org/web/20230427093452/https://github.com/nodejs/Release/blob/main/CODENAMES.md |deadlink=no }}</ref> |
||
|2022-04-19 |
|2022-04-19 |
||
|2025-04-30 |
|2025-04-30 |
||
|- |
|- |
||
| {{Version| |
| {{Version||19.x}} |
||
| {{Version| |
| {{Version||}} |
||
| |
| |
||
| 2022-10-18 |
| 2022-10-18 |
||
Строка 141: | Строка 140: | ||
|- |
|- |
||
| {{Version|c|20.x}} |
| {{Version|c|20.x}} |
||
| {{Version|c| |
| {{Version|c|}} |
||
| [[Железо|Iron]]<ref name="ReleaseNames" /> |
| [[Железо|Iron]]<ref name="ReleaseNames" /> |
||
| 2023-04-18 |
| 2023-04-18 |
||
| 2026-04-30 |
| 2026-04-30 |
||
|- |
|- |
||
| {{Version| |
| {{Version||21.x}} |
||
| {{Version| |
| {{Version||}} |
||
| |
| |
||
| 2023-10-17 |
| 2023-10-17 |
||
Строка 163: | Строка 162: | ||
| 2024-10-14 |
| 2024-10-14 |
||
| 2025-05-27 |
| 2025-05-27 |
||
|- |
|||
| {{Version|p|24.x}} |
|||
| {{Version|p|Planned}} |
|||
| |
|||
| 2025-04-22 |
|||
| 2028-04-30 |
|||
|- |
|- |
||
| colspan="5" |<small>{{Version|l|show=111101}}</small> |
| colspan="5" |<small>{{Version|l|show=111101}}</small> |
||
Строка 211: | Строка 216: | ||
== Пакеты сторонних разработчиков == |
== Пакеты сторонних разработчиков == |
||
В состав Node.js входит собственный менеджер пакетов [[NPM|npm]], который предоставляет возможности установки, публикации и поиска пакетов из репозитория npmjs.com. |
В состав Node.js входит собственный менеджер пакетов [[NPM|npm]], который предоставляет возможности установки, публикации и поиска пакетов из репозитория npmjs.com. |
||
Все зависимости находятся в папке node_modules |
Все зависимости находятся в папке node_modules |
||
Чтобы их использовать сначала нужно инициализировать node js проект |
Чтобы их использовать сначала нужно инициализировать node js проект |
||
<source lang="bash"> |
<source lang="bash"> |
||
npm init |
npm init |
||
</source> |
</source> |
||
Появятся файлы package.json и package-lock.json в которых будет информация о проекте и зависимостях |
Появятся файлы package.json и package-lock.json в которых будет информация о проекте и зависимостях |
||
Установка производится при помощи команды: |
Установка производится при помощи команды: |
||
<source lang="bash"> |
<source lang="bash"> |
||
Строка 228: | Строка 233: | ||
Этой же командой можно производить выборочный поиск пакетов. |
Этой же командой можно производить выборочный поиск пакетов. |
||
Также можно установить все необходимые зависимости из файла package.json |
Также можно установить все необходимые зависимости из файла package.json |
||
<source lang="bash"> |
<source lang="bash"> |
||
npm install |
npm install |
Текущая версия от 17:41, 28 марта 2024
Node.js | |
---|---|
![]() | |
Тип | фреймворк приложения[вд], среда выполнения и открытое программное обеспечение |
Разработчики | OpenJS Foundation[вд] и Даль, Райан |
Написана на | C++, C, JavaScript |
Операционные системы | Linux, Windows[3], BSD[d][3] и macOS[3] |
Первый выпуск | 27 мая 2009[1] |
Последняя версия | |
Репозиторий | github.com/nodejs/node |
Состояние | активное |
Лицензия | лицензия MIT[4] |
Сайт | 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)[5][6], однако технология не получила распространения.
![](http://178.128.105.246/host-http-upload.wikimedia.org/wikipedia/commons/thumb/b/b2/Ryan_Dahl.jpg/170px-Ryan_Dahl.jpg)
Node.js разработал Райан Даль в 2009 году после двух лет экспериментирования над созданием серверных веб-компонентов. В ходе своих исследований он пришёл к выводу, что вместо традиционной модели параллелизма на основе потоков следует обратиться к событийно-ориентированным системам. Эта модель была выбрана из-за простоты, низких накладных расходов (по сравнению с идеологией «один поток на каждое соединение») и быстродействия. Целью Node является предложить «простой способ построения масштабируемых сетевых серверов».
Разработка Node.js спонсируется компанией Joyent.
В декабре 2014 года был создан форк io.js.
В мае 2015 года было принято решение о слиянии io.js и Node.js и дальнейшем развитии под эгидой Node.js Foundation[7].
8 сентября 2015 года вышел Node.js v4.0.0 как результат слияния Node.js v0.12.7 и io.js v3.3.0[8][9].
Важными событиями в развитии платформы стало появление Atomics и SharedArrayBuffer в Node.js 9, а также worker_threads в Node.js 10.5 (и существенное развитие в Node.js 12)[10]. Это позволило создавать многопоточные параллельные приложения, реализовывать примитивы параллельного программирования и работать с разделяемой памятью[11].
Версии
[править | править код]Версия | Статус | Кодовое имя | Дата выпуска | Поддержка до |
---|---|---|---|---|
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[12] | 2015-09-08 | 2018-04-30 |
5.x | End-of-Life | 2015-10-29 | 2016-06-30 | |
6.x | End-of-Life | Boron[12] | 2016-04-26 | 2019-04-30 |
7.x | End-of-Life | 2016-10-25 | 2017-06-30 | |
8.x | End-of-Life | Carbon[12] | 2017-05-30 | 2019-12-31 |
9.x | End-of-Life | 2017-10-01 | 2018-06-30 | |
10.x | End-of-Life | Dubnium[12] | 2018-04-24 | 2021-04-30 |
11.x | End-of-Life | 2018-10-23 | 2019-06-01 | |
12.x | End-of-Life | Erbium[12] | 2019-04-23 | 2022-04-30 |
13.x | End-of-Life | 2019-10-22 | 2020-06-01 | |
14.x | End-of-Life | Fermium[12] | 2020-04-21 | 2023-04-30 |
15.x | End of Life | 2020-10-20 | 2021-06-01 | |
16.x | End-of-Life | Gallium[13] | 2021-04-20 | 2023-09-11 |
17.x | End-of-Life | 2021-10-19 | 2022-06-01 | |
18.x | Maintenance LTS | Hydrogen[14] | 2022-04-19 | 2025-04-30 |
19.x | End-of-Life | 2022-10-18 | 2023-06-01 | |
20.x | Active LTS | Iron[14] | 2023-04-18 | 2026-04-30 |
21.x | Current | 2023-10-17 | 2024-05-30 | |
22.x | Planned | Jod[14] | 2024-04-15 | 2027-04-28 |
23.x | Planned | 2024-10-14 | 2025-05-27 | |
24.x | Planned | 2025-04-22 | 2028-04-30 | |
Легенда: Старая версия, не поддерживается Старая поддерживаемая версия Текущая версия Будущая версия |
Примеры кода
[править | править код]Создание и запуск 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 22.0.0 — 2024.
- ↑ 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 года.
- ↑ 1 2 3 4 5 6 nodejs/Release (англ.). GitHub. Дата обращения: 3 мая 2018. Архивировано 3 мая 2018 года.
- ↑ Bringing forward the End-of-Life Date for Node.js 16 . Дата обращения: 3 ноября 2023. Архивировано 3 ноября 2023 года.
- ↑ 1 2 3 Release codenames . Дата обращения: 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.