Nodejs

Node.js
Node.js logo.svg
Тип событийно-ориентированный язык программирования[d]
Разработчик Node.js Foundation[d] и Даль, Райан
Написана на JavaScript, C++, Python, C
Операционная система macOS, GNU/Linux[d], SmartOS, FreeBSD, Microsoft Windows, AIX и Android[2]
Первый выпуск 27 мая 2010[1]
Последняя версия
Состояние активное
Лицензия лицензия MIT[4][5]
Сайт nodejs.org​ (англ.)
Commons-logo.svg Медиафайлы на Викискладе

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].

Примеры а[ | ]

Создание и запуск 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(3000, "127.0.0.1", () => {
  const { address, port } = server.address();
  console.log(`Сервер запущен ${address}:${port}`);
});

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

// Подключение модуля net
const net = require("net");

// Создание TCP-сервера
const server = net.createServer(stream => {
  // Настройка ировки
  stream.setEncoding("utf8");

  // Объявление обработчика событий
  stream.on("data", data => {
    // Вывод данных на консоль
    console.log(data);
  });
});

// Запуск сервера
server.listen(8080, "127.0.0.1");

Дополнительные пакеты сторонних разработчиков[ | ]

В состав Node.js входит собственный установщик пакетов npm. Установка производится при помощи команды:

npm install <packagename>

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

npm search

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

Фреймворки Node[ | ]

  1. Adonis.js
  2. Express.js
  3. Fastify
  4. Hapi.js
  5. Koa.js
  6. LoopBack.js
  7. Meteor.js
  8. Nest.js
  9. Sails.js

Стек MEAN, MERN, MEVN[ | ]

Обычно при веб-разработке на всех уровнях стека используются разные языки программирования. База данных MongoDB, фреймворки Express.js и AngularJS и технология Node.js вместе образуют стек MEAN — мощную платформу, на всех уровнях которой применяется всего один язык: JavaScript. Стек MEAN привлекателен для разработчиков и бизнеса благодаря простоте и экономичности, а конечные пользователи любят MEAN-приложения за их скорость и отзывчивость. Аббревиатуры MERN и MEVN означают, что в качестве фронтенд-фреймворка используется не AngularJS, а React или VueJS соответственно.

См. также[ | ]

Примечания[ | ]

Литература[ | ]

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

Ссылки[ | ]