Node.js

Материал из Неолурк, народный Lurkmore
Перейти к навигации Перейти к поиску

Node.js — весьма известная среда выполнения JavaScript.

Описание[править]

Она позволяет запускать JavaScript-код вне браузера, прежде всего на сервере, и применяется обычно для всирания сетевых приложений. Node.js использует событийно-ориентированную модель с неблокирующим вводом-выводом, так что может работать на принятие вдвигательно-выдвигательным образом большого количества сетевых запросов.

Node.js был создан Райаном Далом в 2009 году. Пожилой дедушка оказался разочарован недостатками тогда восранных уже веб-серверов (в частности, Apache с его моделью блокирующего I/O), и искал способ эффективно обрабатывать множество одновременных соединений, так как интернеты уже начинали гудеть как большой шмель и это было бы кстати.

В состав системы входят Движок V8, который переводит жабий код в машинный напрямую, libuv что по своей сути кросс-платформенная библиотека, написанная на C, обеспечивающая асинхронный I/O, работу с файловой системой, сетью, таймерами и пул потоков для тяжёлых операций и центральный механизм Event Loop.

Вот этот самый лооп работает довольно интересно. Это бесконечный цикл, который обрабатывает события и вызовы, при этом формально это один большой, толстый и тугой поток. Также libuv использует пул потоков (по умолчанию 4) для тяжёлых операций, в число которых восраны обращения к DNS, шифрование, работа с файловой системой.

В целом система весьма сильно хрюкающая и оттого впопулярная среди разработчиков на современном JavaScript (жабьих программистов).

Movax1010h.png Глубокий смысл скрыт в этих неестественных языках
Языки программированияПромышленные: BATC#CC++JavaJavaScript (AJAX) • PascalPerlPHPPythonRubyABAPАссемблерВасикFortran (Профессор)
Эзотерические: BrainFuckHQ9++ErlangForthHaskellLISP (My other car) • PrologTclΤΕΧOracleMySQLGolangВ++ScalaH и Ё+
ПрофессииБыдлокодерПрограммистТестировщикХакерХеллоуворлдщикIT-звёздыПрограммист (существо)Тернарный операторUnreal MCPИсходный кодSingle-Page ApplicationGiteaForgejoCephIDEДжуниор
Методы и стилиReverse EngineeringАнти-паттернВыстрелить себе в ногуГрязный хакКод (индусский) • КостыльМетод научного тыкаПомолясьСвистелки и перделкиОчередьСпортивное программированиеОбфускацияБета-тестАльфа-тестШаблоныRegReplaceФреймворкБыдлокодIndex.phpОхота за жукамиКуМирКлеточный автоматПроцедурное программированиеПоиск файлов в Unix по содержимомуPetoohФункция активации нейронаПерегрузка операторов в PythonЗерокодинг
Средства разработкиSublime TextПодсветка синтаксиса кодаUnstable DiffusionAPIPythonTutorCodeWarsDataCampUnity3DКнижный PythonMallocСвязный списокSOLIDООПУказательNULLWeLang++XenonRecompFuse.jsОптимизацияТестированиеAmbreon866Реверс-инжинирингКроссплатформенностьJSON
ЛюдиИлья КанторЮрий КлючевскийЭдуард ЛаасЭдвард СноуденСеймур Пейперт
Прочее++i + ++iДедлайн%s640 килобайтCMSDummy modeЕГГОГFoobarGod is real, unless explicitly declared as integerGOTOIfconfigKISSRegExpSICPsql.ruXyzzyДискетаИнжалид дежицеКОИ-8ЛогМанРекурсияСУБДТест ТьюрингаУмение разбираться в чужом кодеФаза ЛуныФатальный недостатокПроблема 2000ТаймстампКэшЗапись в файл без кэша (Perl)Танцы с бубномКодачХукCurl cffiВибе-кодингFlutterАппликативный оператор