Node.js 19.0 har slÀppts, en plattform för att köra nÀtverksapplikationer skrivna i JavaScript. Node.js 19 tillhör en gren med vanlig support, dÀr uppdateringar kommer att slÀppas fram till juni 2023. Inom de nÀrmaste dagarna kommer stabiliseringen av Node.js 18-grenen, som kommer att fÄ LTS-status och stödjas till april 2025, att avslutas. UnderhÄllet av den tidigare LTS-grenen Node.js 16.0 kommer att pÄgÄ till september 2023, och den föregÄende LTS-grenen 14.0 till april 2023.
Huvudsakliga förbÀttringar:
- V8-motorn har uppdaterats till version 10.7, som anvĂ€nds i Chromium 107. Bland förĂ€ndringarna i motorn jĂ€mfört med Node.js 18-grenen noteras implementeringen av den tredje versionen av API Intl.NumberFormat, dĂ€r nya funktioner som formatRange(), formatRangeToParts() och selectRange() har lagts till, grupperingsmöjligheter, nya alternativ för avrundning och precision, samt möjligheten att tolka strĂ€ngar som decimaltal. Ăven beroenden i paketet llhttp 8.1.0 och npm 8.19.2 har uppdaterats.
- En experimentell kommandot 'node âwatch' har föreslagits, med implementering av ett övervakningslĂ€ge som möjliggör automatisk omstart av processen vid förĂ€ndringar i den importerade filen (till exempel, vid körning av 'node âwatch index.js' kommer processen att startas om automatiskt vid Ă€ndringar i index.js).
- Stöd för HTTP 1.1 Keep-Alive-mekanismen har aktiverats för alla utgÄende HTTP/HTTPS-anslutningar, vilket hÄller anslutningen öppen under en viss tid för att bearbeta flera HTTP-förfrÄgningar inom en och samma anslutning. Det förvÀntas att anvÀndningen av Keep-Alive kommer att öka genomströmningen och prestandan. Som standard Àr timeouten för att hÄlla anslutningen öppen instÀlld pÄ 5 sekunder. Implementation av HTTP-klienten har Àven lagt till stöd för analys av HTTP-headern Keep-Alive i svar. servern, och i implementationen av HTTP-servern Node.js har automatisk frÄnkoppling av inaktiva klienter som anvÀnder Keep-Alive lagts till.
- API WebCrypto har överförts till stabil status, med undantag för funktioner som anvÀnder algoritmerna Ed25519, Ed448, X25519 och X448. För att fÄ Ätkomst till modulen WebCrypto kan man nu anvÀnda globalThis.crypto eller require('node:crypto').webcrypto.
- Stödet för verktyg för spÄrning som DTrace, SystemTap och ETW (Event Tracing for Windows) har tagits bort, eftersom underhÄllet av dem bedöms vara otillbörligt pÄ grund av svÄrigheterna att bibehÄlla dem aktuella utan en ordentlig supportplan.
Node.js-plattformen kan anvÀndas bÄde för serverhantering av webapplikationer och för att skapa vanliga klient- och servernÀtverksprogram. För att utöka funktionaliteten för Node.js-applikationer har en stor samling moduler tagits fram, dÀr man kan finna moduler med implementeringar. servrar och kunder för HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3, moduler för integration med olika webbramverk, WebSocket- och Ajax-hanterare, anslutare till databaser (MySQL, PostgreSQL, SQLite, MongoDB), mallmotorer, CSS-motorer, implementationer av kryptalgoritmer och auktorisationssystem (OAuth), XML-parserare.
För att hantera ett stort antal parallella förfrÄgningar anvÀnder Node.js ett asynkront kodkörningssystem baserat pÄ hÀndelsehantering i icke-blockerande lÀge och definierar callback-hanterare. Metoder som epoll, kqueue, /dev/poll och select stöds för multiplexeringsanslutningar. För multiplexeringsanslutningar anvÀnds biblioteket libuv, som Àr ett lager över libev i Unix-system och över IOCP i Windows. För att skapa en trÄdpool anvÀnds biblioteket libeio, och för att utföra DNS-förfrÄgningar i icke-blockerande lÀge integreras c-ares. Alla systemanrop som orsakar blockering utförs inom trÄdpoolen och skickar sedan, liksom signalhanterare, tillbaka resultatet av sitt arbete genom en anonym kanal (pipe). Utförandet av JavaScript-kod sÀkerstÀlls genom att anvÀnda den av Google utvecklade V8-motorn (dessutom utvecklar Microsoft en variant av Node.js med Chakra-Core-motorn).
I grunden liknar Node.js Perl AnyEvent, Ruby Event Machine, Python Twisted och hÀndelsehantering i Tcl, men hÀndelsecykeln (event loop) i Node.js Àr gömd för utvecklaren och pÄminner om hÀndelsehantering i en webbapplikation som körs i webblÀsaren. Vid utveckling av applikationer för Node.js Àr det viktigt att ta hÀnsyn till den hÀndelseorienterade programmeringsspecifikationen. IstÀllet för att köra "var result = db.query('select..');" och vÀnta pÄ att operationen ska slutföras innan jag behandlar resultaten, anvÀnds i Node.js principen för asynkron bearbetning. Det vill sÀga koden omformas till "db.query('select..', function (result) {resultathantering});", dÀr kontrollen omedelbart gÄr vidare till nÀsta kod medan resultaten kommer att bearbetas efter hand.
KĂ€lla: opennet.ru
