vydání , platforma pro provozování síťových aplikací v jazyce JavaScript. Dodatečně byla stabilizována předchozí větev Node.js 12.x, která byla převedena do kategorie vydání s dlouhodobou podporou, na jejichž aktualizacích se pracuje po dobu 4 let. Podpora bývalé LTS-větve Node.js 10.0 bude trvat do dubna 2021, zatímco podpora předchozí LTS-větve 8.0 potrvá do ledna 2020.
Hlavní :
- Engine V8 byl aktualizován na verzi , ve které jsou využívány nové metody optimalizace výkonu, vylepšena destrukturalizace objektů, snížena spotřeba paměti a zkrácena doba přípravy k provedení WebAssembly;
- Ve výchozím nastavení je aktivována plná podpora internacionalizace a Unicode na základě knihoven (International Components for Unicode), která umožňuje vývojářům psát kód, práci s různými jazyky a lokalitami. Modul full-icu je nyní nastavena jako výchozí;
- Stabilizováno API , vytváření vícerozměrných cyklů zpracování událostí (event loop). Implementace je založena na modulu worker_threads, který umožňuje spouštění JavaScriptového kódu ve více paralelních vláknech. Stabilní podpora API Workers Threads byla také zpětně portována do LTS-větve Node.js 12.x;
- Byly zvýšeny požadavky na platformy. Pro sestavení je nyní alespoň macOS 10.11 (vyžaduje Xcode 10), AIX 7.2, Ubuntu 16.04, Debian 9, EL 7, Alpine 3.8, Windows 7/2008;
- Byla vylepšena podpora Pythonu 3. Pokud je v systému nainstalován Python 2 a Python 3, bude se nadále používat Python 2, ale byla přidána možnost sestavení pouze s Pythonem 3;
- Byla odstraněna stará implementace HTTP-parsovací knihovny („—http-parser=legacy“). Byly odstraněny nebo převedeny do kategorie zastaralých volání a vlastnosti FSWatcher.prototype.start(), ChildProcess._channel, metoda open() v objektech ReadStream a WriteStream, request.connection, response.connection, module.createRequireFromPath();
- Následně byla vydána verze 13.0.1, která ihned opravila několik chyb. Mezi nimi byla vyřešena jev upozornění v npm 6.12.0 o použití nepodporované verze.
Připomínáme, že platforma Node.js může být použita jak pro serverové zajištění provozu webových aplikací, tak pro vytváření běžných klientských a serverových síťových programů. Pro rozšíření funkcionality aplikací pro Node.js je připravena velká , ve které lze najít moduly s realizací serverů a klientů HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3, moduly pro integraci s různými webovými frameworky, zpracovatele WebSocket a Ajax, konektory k DBMS (MySQL, PostgreSQL, SQLite, MongoDB), šablonovací nástroje, CSS engine, implementace kryptologických algoritmů a systémů autorizace (OAuth), XML parserů.
Pro zajištění zpracování velkého počtu paralelních požadavků Node.js využívá asynchronní model spuštění kódu, založený na zpracování událostí v neblokujícím režimu a definování callback zpracovatelů. Jako způsoby multiplexování připojení jsou podporovány metody jako epoll, kqueue, /dev/poll a select. Pro multiplexování připojení se používá knihovna , která je nadstavbou nad v systémech Unix a nad IOCP ve Windows. Pro vytváření bazénu vláken (thread pool) je využita knihovna , pro provádění DNS dotazů v neblokujícím režimu je integrován . Všechny systémové volání, která by mohla blokovat, jsou prováděna uvnitř bazénu vláken a poté, stejně jako zpracovatelé signálů, předávají výsledek své práce zpět přes anonymní kanál (pipe). Vykonávání JavaScript kódu je zajištěno prostřednictvím zapojení engine vyvinutého společností Google (navíc Microsoft vyvíjí variantu Node.js s engine chakra-core).
Ve své podstatě je Node.js podobný frameworkům , , a Události v Tcl, ale smyčka zpracování událostí (event loop) v Node.js je skryta před vývojářem a připomíná zpracování událostí ve webové aplikaci běžící v prohlížeči. Při psaní aplikací pro Node.js je třeba brát v úvahu specifika událostmi orientovaného programování, například místo provedení „var result = db.query(„select..“);“ s čekáním na dokončení a následným zpracováním výsledků, Node.js používá princip asynchronního provádění, tj. kód je transformován na „db.query(„select..“, function (result) {zpracování výsledku});“, při kterém se řízení okamžitě převede na další kód a výsledek dotazu bude zpracován, jakmile data přijdou.
Zdroj: opennet.ru
