uvoľnenie , platformy na prevádzku sieťových aplikácií v jazyku JavaScript. Súčasne bola ukončená stabilizácia predchádzajúcej vetvy Node.js 12.x, ktorá bola presunutá do kategórie vydaní s dlhou podporou, pre ktoré sú aktualizácie vydávané počas 4 rokov. Podpora predchádzajúcej LTS vetvy Node.js 10.0 potrvá do apríla 2021, a predpredchádzajúcej LTS vetvy 8.0 do januára 2020.
Hlavné :
- Motor V8 bol aktualizovaný na verziu , v ktorej sú implementované nové metódy optimalizácie výkonu, zlepšená deštrukturalizácia objektov, znížená spotreba pamäte a skrátený čas na vykonanie WebAssembly;
- Predvolene je zahrnutá plná podpora internacionalizácie a Unicode na základe knižníc (International Components for Unicode), ktorá umožňuje vývojárom písať kód, prácu s rôznymi jazykmi a lokalitami. Modul full-icu je teraz nainštalovaný predvolene;
- Stabilizované API , vytvárať viaceré vlákna spracovania udalostí (event loop). Implementácia vychádza z modulu worker_threads, ktorý umožňuje spúšťať JavaScriptový kód v niekoľkých paralelných vláknach. Stabilná podpora API Workers Threads bola taktiež spätne portovaná do LTS vetvy Node.js 12.x;
- Zvýšené požiadavky na platformy. Pre zostavenie je teraz minimálne macOS 10.11 (vyžaduje Xcode 10), AIX 7.2, Ubuntu 16.04, Debian 9, EL 7, Alpine 3.8, Windows 7/2008;
- Vylepšená podpora Python 3. Pri prítomnosti Pythonu 2 a Pythonu 3 sa naďalej používa Python 2, ale bola pridaná možnosť zostavovania pri prítomnosti len Pythonu 3;
- Starý implementačný HTTP parser („—http-parser=legacy“) bol odstránený. Zavolané a vlastnosti, ako FSWatcher.prototype.start(), ChildProcess._channel, metóda open() v objektoch ReadStream a WriteStream, request.connection, response.connection, module.createRequireFromPath(), boli odstránené alebo presunuté medzi zastarané.
- Následne aktualizovanie 13.0.1, ktoré okamžite opravilo niekoľko chýb. Okrem iného bola vyriešená probléma s výstupom v npm 6.12.0 varovanie o používaní nepodporovanej verzie.
Pripomíname, že platforma Node.js môže byť využitá ako na serverové spravovanie Web aplikácií, tak aj na vytváranie bežných klientskych a serverových sieťových programov. Pre rozšírenie funkčnosti aplikácií pre Node.js bola pripravená veľká , v ktorom nájdete moduly s implementáciou serverov a klientov HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3, moduly na integráciu s rôznymi webovými rámcami, spracovateľmi WebSocket a Ajax, konektory k DB (MySQL, PostgreSQL, SQLite, MongoDB), šablonizátory, CSS enginy, implementácie kryptografických algoritmov a systémov autorizácie (OAuth), XML parsery.
Na zabezpečenie spracovania veľkého množstva paralelných požiadaviek využíva Node.js asynchrónny model spúšťania kódu, založený na spracovaní udalostí v neblokujúcom režime a definovaní callback spracovateľov. Ako spôsoby multiplexovania spojení sú podporované metódy ako epoll, kqueue, /dev/poll a select. Na multiplexovanie spojení sa používa knižnica , ktorá je nadstavbou nad v systémoch Unix a nad IOCP vo Windows. Na vytvorenie poolu vlákien (thread pool) sa využíva knižnica , na vykonávanie DNS požiadaviek v neblokujúcom režime je integrovaný . Všetky systémové volania, ktoré spôsobujú blokovanie, sa vykonávajú v rámci poolu vlákien a potom, rovnako ako spracovatelia signálov, prenášajú výsledok svojej práce späť cez anonymný kanál (pipe). Vykonávanie JavaScript kódu je zabezpečené pomocou zapojenia vyvinutého spoločnosťou Google motora (dodatočne Microsoft vyvíja variant Node.js s motorom Chakra-Core).
Vo svojej podstate je Node.js podobný rámcom , , a udalostí v Tcl, ale cyklus spracovania udalostí (event loop) v Node.js je skrytý pred vývojárom a pripomína spracovanie udalostí vo webovej aplikácii, ktorá beží v prehliadači. Pri písaní aplikácií pre node.js je potrebné zohľadniť špecifiká programovania orientovaného na udalosti, napríklad namiesto vykonania „var result = db.query(„select..“);“ s čakaním na dokončenie práce a následným spracovaním výsledkov, v Node.js sa používa princíp asynchrónneho vykonávania, t.j. kód sa transformuje na „db.query(„select..“, function (result) {spracovanie výsledku});“, pričom riadenie okamžite prejde na ďalší kód a výsledok požiadavky bude spracovaný na základe prichádzajúcich dát.
Zdroj: opennet.ru
