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

Proběhlo vydání Node.js 20.0, platformy pro spouštění síťových aplikací v JavaScriptu. Node.js 20.0 byl přiřazen k větvi long support, ale tento status bude přidělen až v říjnu, po stabilizaci. Node.js 20.x bude podporován do 30. dubna 2026. Údržba předchozí větve Node.js 18.x LTS potrvá do dubna 2025 a předchozí větve 16.x LTS do září 2023. Větev 14.x LTS bude udržována 30. dubna a prozatímní větev Node.js 19.x 1. června.

Hlavní vylepšení:

  • Engine V8 byl aktualizován na verzi 11.3, která se používá v Chromiu 113. Ze změn oproti větvi Node.js 19, která používala engine Chromium 107, byly funkce String.prototype.isWellFormed a toWellFormed, Array.prototype a TypedArray.prototype metody pro práci s kopírováním při změně objektů Array a TypedArray, příznak "v" v RegExp, podpora pro změnu velikosti ArrayBuffer a zvětšení velikosti SharedArrayBuffer, tail-call ve WebAssembly.
  • Je navržen experimentální mechanismus modelu oprávnění, který umožňuje omezit přístup k určitým zdrojům během provádění. Podpora modelu oprávnění je povolena zadáním příznaku "--experimental-permission" při spuštění. V počáteční implementaci byly navrženy možnosti pro omezení přístupu pro zápis (--allow-fs-write) a čtení (--allow-fs-read) do určitých částí FS, podřízených procesů (--allow-child-process) , doplňky (--no-addons ) a vlákna (--allow-worker). Chcete-li například povolit zápis do adresáře /tmp a čtení souboru /home/index.js, můžete zadat: node --experimental-permission --allow-fs-write=/tmp/ --allow-fs-read =/home/index.js index .js

    Ke kontrole přístupu se doporučuje použít metodu process.permission.has(), například "process.permission.has('fs.write',"/tmp/test").

  • Obslužné rutiny pro externí moduly ECMAScript (ESM) načtené pomocí možnosti „--experimental-loader“ se nyní spouštějí v samostatném vlákně izolovaném od hlavního vlákna, což eliminuje průnik kódu aplikace a načtených modulů ESM. Podobně jako v prohlížečích se metoda import.meta.resolve() nyní provádí synchronně, když je volána z aplikace. V jedné z dalších větví Node.js se plánuje přesunutí podpory načítání ESM do kategorie stabilních funkcí.
  • Modul node:test (test_runner), určený k vytváření a spouštění testů JavaScriptu, které vracejí výsledky ve formátu TAP (Test Anything Protocol), byl přesunut do stabilní verze.
  • Byl vytvořen samostatný výkonnostní tým, který v rámci přípravy na novou větev pracoval na zrychlení různých runtime komponent, včetně URL parsování, fetch() a EventTarget. Například režie inicializace EventTarget byla snížena na polovinu, výkon metody URL.canParse() byl výrazně zlepšen a účinnost časovačů byla zlepšena. Kromě toho je ve složení zahrnuto vydání vysoce výkonného analyzátoru URL - Ada 2.0, napsaného v C ++.
  • Pokračoval vývoj experimentální funkce pro doručování aplikací ve formě jednoho spustitelného souboru (SEA, Single Executable Applications). Vytvoření spustitelného souboru nyní vyžaduje nahrazení objektu BLOB vygenerovaného z konfiguračního souboru JSON (místo nahrazení souboru JavaScriptu).
  • Vylepšená kompatibilita Web Crypto API s implementacemi z jiných projektů.
  • Přidána oficiální podpora Windows na systémech ARM64.
  • Pokračující podpora pro rozšíření WASI (WebAssembly System Interface) pro vytváření samostatných aplikací WebAssembly. Odstraněna potřeba zadat speciální příznak příkazového řádku pro povolení podpory WASI.

Platformu Node.js lze použít jak pro podporu webových aplikací na straně serveru, tak pro tvorbu standardních síťových programů na straně klienta a serveru. Pro rozšíření funkcionality aplikací Node.js byla připravena rozsáhlá kolekce modulů, včetně těch, které implementují servery a klienty HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3, moduly pro integraci s různými webovými frameworky, obslužné rutiny WebSocket a Ajax, konektory k DBMS (MySQL, PostgreSQL, SQLite, MongoDB), šablonovací enginy, CSS enginy, implementace kryptografických algoritmů a autorizačních systémů (OAuth), XML parsery.

Pro 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 obslužných rutinách zpětných volání. Mezi podporované metody multiplexování připojení patří epoll, kqueue, /dev/poll a select. Pro multiplexování připojení se používá knihovna libuv, která je nadmnožinou knihovny libev na unixových systémech a IOCP na IOCP. WindowsKnihovna libeio se používá k vytvoření poolu vláken a c-ares je integrován pro provádění DNS dotazů v neblokujícím režimu. Všechna blokující systémová volání jsou prováděna v rámci poolu vláken a poté, stejně jako obslužné rutiny signálů, vracejí své výsledky prostřednictvím nepojmenovaného kanálu. Spouštění JavaScriptu zajišťuje engine V8 od Googlu (Microsoft také vyvíjí variantu 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

Kupte si spolehlivý hosting pro stránky s DDoS ochranou, VPS VDS servery 🔥 Kupte si spolehlivý webhosting s ochranou DDoS, VPS VDS servery | ProHoster