Den serverbaserade JavaScript-plattformen Node.js 21.0 Àr tillgÀnglig.

Node.js 21.0 har slÀppts, en plattform för att köra nÀtverksapplikationer skrivna i JavaScript. Stödet för Node.js 21.0 kommer att pÄgÄ i 6 mÄnader. Inom de nÀrmaste dagarna kommer stabiliseringen av Node.js 20 att slutföras, vilket fÄr LTS-status och kommer att stödjas till april 2026. UnderhÄllet av den tidigare LTS-versionen Node.js 18.0 kommer att pÄgÄ till september 2025, och den föregÄende LTS-versionen 16.0 kommer att stödjas till april 2024.

Huvudsakliga förbÀttringar:

  • Det stabila API:t Fetch har tillkĂ€nnagivits, avsett för att hĂ€mta resurser över nĂ€tverket och förenkla skrivandet av universell JavaScript-kod som fungerar bĂ„de pĂ„ server- och klientsidan. Implementeringen Ă€r baserad pĂ„ koden frĂ„n HTTP/1.1-klienten undici och Ă€r nĂ€ra kopplad till det liknande API som tillhandahĂ„lls i webblĂ€sare. API:t inkluderar metoden fetch() och objekten Headers, Request och Response, som representerar HTTP-rubriker, förfrĂ„gningar och svar. const res = await fetch('https://nodejs.org/api/documentation.json'); if (res.ok) { const data = await res.json(); console.log(data); }
  • Stödet för API:t WebStreams har stabiliserats, vilket ger Ă„tkomst till datastreams som hĂ€mtas över nĂ€tet. API:t möjliggör att lĂ€gga till egna hanterare som arbetar med data allt eftersom informationen anlĂ€nder över nĂ€tverket, utan att vĂ€nta pĂ„ att hela filen ska laddas. I Node.js finns objekt som ReadableStream*, TransformStream*, WritableStream*, TextEncoderStream, TextDecoderStream, CompressionStream och DecompressionStream.
  • En experimentell implementation av WebSocket-klienten har lagts till, kompatibel med webblĂ€sare.. För att aktivera stödet för WebSocket finns flaggan "—experimental-websocket".
  • En experimentell standardlĂ€ge för anvĂ€ndningen av JavaScript-moduler ESM (ECMAScript Modules, anvĂ€nder i moduler för webblĂ€sare) istĂ€llet för CommonJS (specifik för Node.js) har lagts till. Ändringen pĂ„verkar inte moduler vars format tydligt definieras via fĂ€ltet "type" i package.json, specificerat genom flaggan "—input-type" eller uppenbart pĂ„ grund av filĂ€ndelsen (.mjs för ESM, .cjs för CommonJS). Moduler som inte uttryckligen definieras som CommonJS (till exempel har filĂ€ndelsen ".js") kommer, nĂ€r det nya lĂ€get aktiveras, att uppfattas som ESM-moduler. För att aktivera de nya modulinstĂ€llningarna föreslĂ„s flaggan "—experimental-default-type".
  • V8-motorn har uppdaterats till version 11.8, som anvĂ€nds i Chromium 118, dĂ€r stödet för metoden ArrayBuffer.prototype.transfer, möjligheten att gruppera arrayer (metoden groupBy) och WebAssembly-instruktioner för bearbetning av konstanter (i32.add, i32.sub, i32.mul, i64.add, i64.sub och i64.mul) har införts.
  • Stödet för globalPreload-hanteraren har upphört. IstĂ€llet bör du anvĂ€nda anropen register och initialize för att konfigurera moduler.
  • Funktionen fs.writeFile har fĂ„tt alternativet "flush" för att tvinga skrivning av data till lagringen efter varje skrivoperation.
  • Prestandan för koden kopplad till URL-parsing, API-fetch, strömmar, node:fs och HTTP har förbĂ€ttrats.
  • En global navigator-objekt har lagts till. Till exempel kan du anvĂ€nda navigator.hardwareConcurrency för att fĂ„ information om antalet CPU-kĂ€rnor.
  • Parametern "—test" har fĂ„tt stöd för globmönster för att vĂ€lja vilka tester som ska köras (till exempel kan du ange "—test **/*.test.js").
  • Paketmanagern npm 10.2.0 och parsern llhttp 9.1.2 har uppdaterats.
  • Stödet för Visual Studio 2019 och macOS-versioner Ă€ldre Ă€n 11.0 har upphört.

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

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster