K dispozici je JavaScriptová platforma na straně serveru Node.js 21.0

Byl vydán Node.js 21.0, platforma pro spouštění síťových aplikací v JavaScriptu. Větev Node.js 21.0 bude podporována po dobu 6 měsíců. V nejbližších dnech bude dokončena stabilizace větve Node.js 20, která získá status LTS a bude podporována do dubna 2026. Údržba předchozí LTS větve Node.js 18.0 potrvá do září 2025 a předloni LTS větve 16.0 do dubna 2024.

Hlavní vylepšení:

  • Fetch API bylo prohlášeno za stabilní, určené pro načítání zdrojů přes síť a zjednodušení psaní univerzálního kódu JavaScript vhodného pro práci na straně serveru i klienta. Implementace je založena na kódu z HTTP/1.1 undici klienta a je co nejblíže podobnému API poskytovanému v prohlížečích. Rozhraní API zahrnuje metodu fetch() a objekty Headers. Request and Response, představující HTTP hlavičky, požadavek a odpověď. const res = wait fetch('https://nodejs.org/api/documentation.json'); if (res.ok) { const data = wait res.json(); console.log(data); }
  • Podpora rozhraní WebStreams API, které poskytuje přístup k datovým tokům přijímaným přes síť, byla stabilizována. Rozhraní API umožňuje přidávat vlastní obslužné programy, které pracují s daty, jakmile informace přicházejí přes síť, aniž byste museli čekat na stažení celého souboru. Objekty dostupné v Node.js zahrnují ReadableStream*, TransformStream*, WritableStream*, TextEncoderStream, TextDecoderStream, CompressionStream a DecompressionStream.
  • Přidána experimentální implementace klienta WebSocket, kompatibilního s prohlížeči. Pro aktivaci podpory WebSocket je poskytnut příznak „--experimental-websocket“.
  • Přidán experimentální režim pro použití výchozí implementace modulů JavaScriptu ESM (ECMAScript Modules, používané v modulech pro prohlížeče) namísto CommonJS (specifického pro Node.js). Změna se netýká modulů, jejichž formát je explicitně definován pomocí pole „type“ v package.json, specifikovaného pomocí příznaku „--input-type“, nebo je zřejmý díky přípone souboru (.mjs pro ESM, .cjs pro CommonJS). Nicméně moduly, které nejsou explicitně definovány jako CommonJS (například mají příponu „.js“), budou po povolení nového režimu považovány za moduly ESM. Pro aktivaci nastavení nového modulu byl navržen příznak „--experimental-default-type“.
  • Modul V8 byl aktualizován na verzi 11.8 používanou v Chromium 118, která nyní podporuje metodu ArrayBuffer.prototype.transfer, možnost seskupovat pole (metoda groupBy) a instrukce WebAssembly pro zpracování konstant (i32.add, i32.sub, i32.mul, i64.add, i64.sub a i64.mul).
  • Podpora pro obslužnou rutinu globalPreload byla ukončena ve prospěch registrace a inicializace volání pro konfiguraci modulů.
  • Do funkce fs.writeFile byla přidána možnost „flush“, která vynutí vyprázdnění dat na jednotku po každé operaci zápisu.
  • Vylepšený výkon kódu souvisejícího s analýzou URL, načítáním API, streamy, node:fs a HTTP.
  • Přidán objekt globálního navigátoru. Chcete-li například získat data o počtu jader CPU, můžete použít vlastnost navigator.hardwareConcurrency.
  • V parametru „—test“ byla přidána podpora pro glob masky pro výběr testů ke spuštění (například můžete zadat „—test **/*.test.js.“).
  • Přibalený správce balíčků npm 10.2.0 a analyzátor llhttp 9.1.2 byly aktualizovány.
  • Podpora pro Visual Studio 2019 a verze macOS starší než 11.0 byla ukončena.

Platformu Node.js lze použít jak pro serverovou údržbu webových aplikací, tak pro tvorbu běžných klientských a serverových síťových programů. Pro rozšíření funkčnosti aplikací pro Node.js je připravena velká kolekce modulů, ve kterých naleznete moduly s implementací HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3 servery a klienty, moduly pro integraci s různými webovými frameworky, obslužnými nástroji WebSocket a Ajax, DBMS konektory (MySQL, PostgreSQL, SQLite, MongoDB), šablonovacími enginy, CSS motory, implementacemi kryptografických algoritmů a autorizačních systémů (OAuth), XML parsery.

Aby bylo zajištěno zpracování velkého počtu paralelních požadavků, používá Node.js asynchronní model spouštění kódu založený na neblokujícím zpracování událostí a definici obslužných rutin zpětného volání. Podporované metody pro multiplexní připojení jsou epoll, kqueue, /dev/poll a select. Pro multiplexování připojení se používá knihovna libuv, což je doplněk pro libev na systémech Unix a IOCP na Windows. Knihovna libeio se používá k vytvoření fondu vláken a c-ares je integrován pro provádění DNS dotazů v neblokujícím režimu. Všechna systémová volání, která způsobují blokování, jsou prováděna uvnitř fondu vláken a poté, jako obslužné rutiny signálů, přenášejí výsledek své práce zpět přes nepojmenovanou rouru (rouru). Spouštění kódu JavaScript je zajištěno pomocí enginu V8 vyvinutého společností Google (Microsoft navíc vyvíjí verzi Node.js s enginem Chakra-Core).

Ve svém jádru je Node.js podobný Perl AnyEvent, Ruby Event Machine, Python Twisted frameworkům a implementaci událostí Tcl, ale smyčka událostí v Node.js je před vývojářem skrytá a připomíná zpracování událostí ve spuštěné webové aplikaci. v prohlížeči. Při psaní aplikací pro node.js musíte vzít v úvahu specifika programování řízeného událostmi, například místo toho, abyste dělali "var result = db.query("select..");" s čekáním na dokončení práce a následným zpracováním výsledků využívá Node.js princip asynchronního provádění, tzn. kód se transformuje na "db.query("select..", funkce (výsledek) {zpracování výsledku});", ve kterém řízení okamžitě přejde na další kód a výsledek dotazu bude zpracován, jakmile data dorazí.

Zdroj: opennet.ru

Přidat komentář