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

Node.js 19.0, platforma pro spouštění síťových aplikací v JavaScriptu, byla vydána. Node.js 19 je běžná větev podpory s aktualizacemi dostupnými do června 2023. V nejbližších dnech bude dokončena stabilizace větve Node.js 18, která získá status LTS a bude podporována do dubna 2025. Údržba předchozí LTS větve Node.js 16.0 potrvá do září 2023 a předloni LTS větve 14.0 do dubna 2023.

Hlavní vylepšení:

  • Engine V8 byl aktualizován na verzi 10.7 používanou v Chromiu 107. Mezi změnami v enginu oproti větvi Node.js 18 je zaznamenána implementace třetí verze API Intl.NumberFormat, která přidává nové funkce formatRange (), formatRangeToParts() a selectRange(), seskupování sad, nové možnosti zaokrouhlování a nastavení přesnosti, možnost interpretovat řetězce jako desetinná čísla. Zahrnuté závislosti llhttp 8.1.0 a npm 8.19.2 byly také aktualizovány.
  • Byl navržen experimentální příkaz "node -watch" s implementací režimu sledování, který zajišťuje restartování procesu, když se importovaný soubor změní (například pokud je spuštěn "node -watch index.js", proces bude automaticky restartován při změně index.js).
  • Pro všechna odchozí připojení HTTP/HTTPS je povolena podpora mechanismu HTTP 1.1 Keep-Alive, který ponechává připojení po určitou dobu otevřené pro zpracování několika požadavků HTTP v rámci stejného připojení. Očekává se, že Keep-Alive zlepší propustnost a výkon. Ve výchozím nastavení je doba otevření připojení nastavena na 5 sekund. Do implementace HTTP klienta byla přidána podpora pro analýzu hlavičky Keep-Alive HTTP v odpovědích serveru a do implementace serveru Node.js HTTP serveru bylo přidáno automatické odpojování neaktivních klientů pomocí Keep-Alive.
  • WebCrypto API bylo převedeno do kategorie stable s výjimkou funkcí využívajících algoritmy Ed25519, Ed448, X25519 a X448. Pro přístup k modulu WebCrypto můžete nyní použít globalThis.crypto nebo require('node:crypto').webcrypto.
  • Byla odstraněna podpora trasovacích nástrojů DTrace, SystemTap a ETW (Event Tracing for Windows), jejichž údržba byla považována za nevhodnou kvůli složitosti udržování aktuálního stavu při absenci řádného plánu podpory.

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ář