uvoľnenie , platformy na vykonávanie sieťových aplikácií v jazyku JavaScript. Node.js 14.0 patrí do vetiev s dlhodobou podporou, ale tento status bude pridelený až v októbri po stabilizácii. Podpora Node.js 14.0 bude do apríla 2023. Podpora pre minulé LTS vetvy Node.js 12.0 potrvá do apríla 2022, a predminulej LTS vetvy 10.0 do apríla 2021. Podpora pre medzivetvu 13.x sa skončí v júni tohto roku.
Hlavné :
- Stabilizovaná bola možnosť generovania na požiadanie alebo pri výskyte určitých udalostí , ktoré odrážajú udalosti pomáhajúce pri diagnostike problémov, ako sú pády, pokles výkonnosti, úniky pamäte, vysoké zaťaženie CPU, nepredvídané chybové výstupy a podobne.
- Pridaná experimentálna podpora API s implementáciou triedy AsyncLocalStorage, ktorá sa môže používať na vytváranie asynchrónneho stavu s obsluhou na základe callback volaní a promise. AsyncLocalStorage umožňuje uchovávať údaje počas spracovania webového požiadavku, pripomínajúce lokálne pre jednotlivé vlákna úložiská (Thread-Local Storage) v iných jazykoch.
- Odstránený výstup varovania o experimentálnej funkčnosti pri načítaní pripojených a exportovaných pomocou výrazov import a export. Implementácia modulov ESM zatiaľ zostáva experimentálnou.
- Motor V8 bol aktualizovaný na verziu (, , ), v ktorej boli vykonané nové optimalizácie výkonu a pridané novinky ako nový logický operátor zlučovania „??“ (vracia pravý operand, ak ľavý operand má hodnotu NULL alebo undefined, a opačne), operátor „?.“ pre jednorazové overenie celej reťazca vlastností alebo volaní (napríklad „db?.user?.name?.length“ bez predchádzajúcich kontrol), metóda Intl.DisplayName pre získanie lokalizovaných názvov a podobne.
- Prebehla revízia API Streams, zameraná na zlepšenie konzistencie API rozhraní Streams a odstránenie rozdielov v správaní základných častí Node.js. Napríklad správanie http.OutgoingMessage je priblížené k stream.Writable, a net.Socket k stream.Duplex. Možnosť autoDestroy je predvolene nastavená na hodnotu „true“, čo predpokladá volanie „_destroy“ po dokončení.
- Pridaná experimentálna podpora API (), poskytujúce programové rozhrania pre priamu interakciu s operačným systémom (POSIX API pre prácu s súbormi, socketmi a podobne).
- Zvýšili sa požiadavky na kompilátorov a platforiem: macOS 10.13 (High Sierra), GCC 6, .
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
