Node.js 24.0.0, en plattform för att köra nÀtverksapplikationer i JavaScript, har slÀppts. Node.js 24.0 Àr tilldelad lÄngsiktiga supportgrenar, men denna status kommer att tilldelas först i oktober, efter stabilisering. Node.js 24.x kommer att stödjas till och med den 30 april 2028. Den tidigare LTS-grenen Node.js 22.x kommer att stödjas till och med april 2027, och den tidigare LTS-grenen 20.x kommer att stödjas till och med april 2026. UnderhÄllet av LTS-grenen 18.x upphör den 30 april 2025, och den mellanliggande grenen Node.js 23.x upphör den 1 juni 2025.
HuvudförbÀttringar:
- AsyncLocalStorage API anvÀnder AsyncContextFrame-klassen som standard, vilken Àr markerad som stabil. AsyncContextFrame implementerar en effektivare mekanism för att spÄra asynkron kontext, vilket kan förbÀttra prestandan avsevÀrt.
- URLPattern API Àr nu tillgÀngligt som ett globalt objekt som kan anvÀndas utan explicit import. URLPattern ger möjlighet att kontrollera om en URL matchar ett specifikt mönster, vilket till exempel kan anvÀndas för att analysera lÀnkar.
- Mekanismen för behörighetsmodellen har förbÀttrats och stabiliserats, vilket gör att du kan begrÀnsa Ätkomsten till vissa resurser under körning (till exempel kan du förbjuda skapandet av underprocesser, begrÀnsa Ätkomsten till skrivning eller lÀsning till vissa delar av FS, inaktivera tillÀgg). IstÀllet för den experimentella flaggan "--experimental-permission" kan flaggan "--permission" nu anvÀndas för att aktivera behörighetsmodellen.
- Funktionerna i node:test-modulen (test_runner), utformad för att skapa och köra tester i JavaScript som returnerar resultat i TAP-format (Test Anything Protocol), har utökats. Modulen vÀntar nu automatiskt pÄ att kapslade tester ska slutföras utan att behöva anvÀnda await.
- HTTP-klienten undici har uppdaterats till 7.x-grenen, vilket förbÀttrar prestandan och lÀgger till stöd för nya HTTP-funktioner.
- V8-motorn har uppdaterats till version 13.6, som anvÀnds i Chromium 136. Nya funktioner jÀmfört med den tidigare Node.js-utgÄvan inkluderar stöd för typade Float16Array-arrayer, manuell resurshantering, RegExp.escape-metoden (escape-strÀngar för RegExp), 64-bitarspekare (Memory64) i WebAssembly och Error.isError-metoden.
- Pakethanteraren för NPM har uppdaterats till version 11.
- Stöd för MSVC-kompilatorer har upphört. För kompilering pÄ plattformen. Windows Du mÄste anvÀnda ClangCL.
Node.js-plattformen kan anvÀndas bÄde för serversidesstöd för webbapplikationer och för att skapa standardiserade nÀtverksprogram pÄ klient- och serversidan. För att utöka funktionaliteten hos Node.js-applikationer har en stor samling moduler förberetts, inklusive de som implementerar servrar och klienter för HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3, moduler för integration med olika webbramverk, WebSocket- och Ajax-hanterare, kopplingar till DBMS (MySQL, PostgreSQL, SQLite, MongoDB), mallmotorer, CSS-motorer, implementeringar av kryptografiska algoritmer och auktoriseringssystem (OAuth), XML-parsers.
För att hantera ett stort antal samtidiga förfrÄgningar anvÀnder Node.js en asynkron kodexekveringsmodell baserad pÄ icke-blockerande hÀndelsebearbetning och Äteruppringningshanterare. Anslutningsmultiplexeringsmetoder som stöds inkluderar epoll, kqueue, /dev/poll och select. Anslutningsmultiplexering anvÀnder libuv-biblioteket, vilket Àr en byggsats ovanpÄ libev pÄ Unix-system och IOCP pÄ ... WindowsLibeio-biblioteket anvÀnds för att skapa en trÄdpool, och c-ares Àr integrerat för att utföra DNS-frÄgor i icke-blockerande lÀge. Alla blockerande systemanrop körs inom trÄdpoolen och returnerar sedan, precis som signalhanterare, sina resultat via en namnlös pipe.
Exekvering av JavaScript-kod sÀkerstÀlls genom att anvÀnda V8-motorn som utvecklats av Google (dessutom utvecklar Microsoft en version av Node.js med Chakra-Core-motorn). I sin kÀrna liknar Node.js Perl AnyEvent, Ruby Event Machine, Python Twisted ramverk och implementeringen av hÀndelser i Tcl, men hÀndelseloopen i Node.js Àr dold för utvecklaren och liknar hÀndelsebearbetning i en webbapplikation körs i webblÀsaren.
KĂ€lla: opennet.ru
