Vydanie serverovej JavaScript platformy Node.js 14.0

Sa uskutočnilo uvoľnenie Node.js 14.0, 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 uskutočňovaná 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é vylepšenia:

  • Stabilizovaná bola možnosť generovania na požiadanie alebo pri výskyte určitých udalostí diagnostických správ, 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 Async Local Storage 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í modulov ECMAScript 6 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 8.1 (1, 2, 3), 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 WASI (WebAssembly System Interface), 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 minimálne verzie kompilátorov a platforiem: macOS 10.13 (High Sierra), GCC 6, Windows novšie ako 7/2008R2.

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á kolekcia modulov, 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 libuv, ktorá je nadstavbou nad libev v systémoch Unix a nad IOCP vo Windows. Na vytvorenie poolu vlákien (thread pool) sa využíva knižnica libeio, na vykonávanie DNS požiadaviek v neblokujúcom režime je integrovaný c-ares. 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 V8 (dodatočne Microsoft vyvíja variant Node.js s motorom Chakra-Core).

Vo svojej podstate je Node.js podobný rámcom Perl AnyEvent, Ruby Event Machine, Python Twisted a implementáciu 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

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster