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

Node.js 18.0 har slÀppts, en plattform för att köra nÀtverksapplikationer skrivna i JavaScript. Node.js 18.0 Àr för nÀrvarande i en lÄngsiktig supportgren, men den statusen kommer att beviljas först i oktober efter stabilisering. Stödet för Node.js 18.x kommer att pÄgÄ till april 2025. UnderhÄllet av den tidigare LTS-grenen Node.js 16.x kommer att fortsÀtta till april 2024, och den föregÄende LTS-grenen 14.x fram till april 2023. UnderhÄllet för LTS-grenen 12.x avbryts den 30 april, och den mellanliggande grenen Node.js 17.x den 1 juni.

Huvudsakliga förbÀttringar:

  • V8-motorn har uppdaterats till version 10.1, som anvĂ€nds i Chromium 101. JĂ€mfört med Node.js 17.9.0-versionen har stöd för funktioner som metoderna findLast och findLastIndex lagts till, vilket möjliggör sökning av element frĂ„n slutet av en array, samt funktionen Intl.supportedValuesOf. API:t Intl.Locale har förbĂ€ttrats. Initieringen av klassfĂ€lt och privata metoder har pĂ„skyndats.
  • Den experimentella API:n fetch() har aktiverats som standard, avsedd för att hĂ€mta resurser över nĂ€tet. Implementeringen baseras pĂ„ koden frĂ„n HTTP/1.1-klienten undici och ligger sĂ„ nĂ€ra motsvarande API i webblĂ€sare som möjligt. Stöd för grĂ€nssnitten FormData, Headers, Request och Response för manipulation av HTTP-rubriker för förfrĂ„gningar och svar har ocksĂ„ sĂ€kerstĂ€llts. const res = await fetch('https://nodejs.org/api/documentation.json'); if (res.ok) { const data = await res.json(); console.log(data); }
  • En experimentell implementering av API:t Web Streams har lagts till, vilket ger tillgĂ„ng till datastreams som tas emot över nĂ€tet. API:t möjliggör att lĂ€gga till egna hanterare för att arbeta med data nĂ€r informationen anlĂ€nder över nĂ€tet, utan att behöva vĂ€nta pĂ„ att hela filen ska laddas. I Node.js finns nu sĂ„dana objekt som ReadableStream*, TransformStream*, WritableStream*, TextEncoderStream, TextDecoderStream, CompressionStream och DecompressionStream.
  • API:t Blob, som gör det möjligt att inkapsla oförĂ€nderliga rĂ„data för sĂ€ker anvĂ€ndning i olika arbetstrĂ„dar, har nu stabiliserats.
  • API:t BroadcastChannel, som möjliggör asynkron meddelandeutbyte i formatet 'en avsĂ€ndare - mĂ„nga mottagare', har nu stabiliserats.
  • Den experimentella modulen node:test har lagts till för att skapa och köra tester i JavaScript, som returnerar resultat i TAP-format (Test Anything Protocol).
  • FĂ€rdiga byggnader för Red Hat Enterprise Linux (RHEL) 8 och andra distributioner baserade pĂ„ Glibc 2.28+ har skapats, inklusive Debian 10 och Ubuntu 20.04, samt för macOS 10.15+. PĂ„ grund av problem med byggandet av V8-motorn har skapandet av 32-bitarsbyggnader för Windows tillfĂ€lligt stoppats.
  • En experimentell möjlighet att bygga en körbar Node.js-fil med anvĂ€ndarvalda komponenter, som initieras vid start, har tillhandahĂ„llits. För att definiera startkomponenter har alternativet "—node-snapshot-main" lagts till i byggskriften configure, till exempel "./configure —node-snapshot-main=marked.js; name node".

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