vydání , platformy pro provoz síťových aplikací napsaných v jazyce JavaScript. Node.js 14.0 se řadí mezi větve s dlouhodobou podporou, tento status však bude přidělen až v říjnu po stabilizaci. Podpora Node.js 14.0 bude do dubna 2023. Podpora předchozí LTS větve Node.js 12.0 potrvá do dubna 2022, a předpředchozí LTS větve 10.0 do dubna 2021. Podpora mezilehlé větve 13.x skončí v červnu letošního roku.
Hlavní :
- Byla stabilizována možnost dynamického generování nebo při určitých událostech , které odrážejí události usnadňující diagnostiku problémů jako jsou pády, poklesy výkonu, úniky paměti, vysoké zatížení CPU, neočekávaný výstup chyb atd.
- Byla přidána experimentální podpora API s implementací třídy AsyncLocalStorage, která může být použita k vytvoření asynchronního stavu s obslužnými funkcemi založenými na zpětných voláních a promise. AsyncLocalStorage umožňuje uchovávat data po dobu zpracování webového požadavku, připomínající lokální úložiště pro jednotlivé vlákna (Thread-Local Storage) v jiných jazycích.
- Bylo odstraněno varování o experimentální funkci při načítání připojovaných a exportovaných pomocí výrazů import a export. Samotná implementace modulů ESM zatím zůstává experimentální.
- Engine V8 byl aktualizován na verzi (, , ), která obsahuje nové optimalizace výkonu a novinky jako nový logický operátor sloučení „??“ (vrací pravou operandu, pokud je levá operanda NULL nebo undefined, a naopak), operátor „?.“ pro jednorázové ověření celého řetězce vlastností nebo volání (například „db?.user?.name?.length“ bez předchozích kontrol), metoda Intl.DisplayName pro získání lokalizovaných názvů atd.
- Byla provedena revize API Streams, zaměřená na zlepšení konzistence API rozhraní Streams a odstranění rozdílů v chování základních částí Node.js. Například chování http.OutgoingMessage bylo přiblíženo k stream.Writable, a net.Socket k stream.Duplex. Volba autoDestroy je ve výchozím nastavení nastavena na „true“, což znamená volání „_destroy“ po dokončení.
- Byla přidána experimentální podpora API (), který poskytuje aplikační rozhraní pro přímou interakci s operačním systémem (POSIX API pro práci se soubory, sokety atd.).
- Zvýšeny požadavky na kompilátorů a platforem: macOS 10.13 (High Sierra), GCC 6, .
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
