Server-side JavaScript-plattform Node.js 19.0 tilgjengelig

Node.js 19.0, en plattform for å kjøre nettverksapplikasjoner i JavaScript, ble utgitt. Node.js 19 er en vanlig støttegren med oppdateringer tilgjengelig frem til juni 2023. I de kommende dagene vil stabiliseringen av Node.js 18-grenen fullføres, som vil få LTS-status og støttes frem til april 2025. Vedlikehold av den forrige LTS-grenen til Node.js 16.0 vil vare til september 2023, og året før siste LTS-gren 14.0 til april 2023.

Hovedforbedringer:

  • V8-motoren er oppdatert til versjon 10.7, brukt i Chromium 107. Blant endringene i motoren sammenlignet med Node.js 18-grenen, er implementeringen av den tredje versjonen av Intl.NumberFormat API notert, som legger til nye funksjoner formatRange (), formatRangeToParts() og selectRange(), gruppering av sett, nye alternativer for avrunding og innstillingspresisjon, muligheten til å tolke strenger som desimaltall. De inkluderte avhengighetene llhttp 8.1.0 og npm 8.19.2 har også blitt oppdatert.
  • En eksperimentell "node -watch"-kommando har blitt foreslått med implementering av en overvåkingsmodus som sikrer at prosessen startes på nytt når den importerte filen endres (for eksempel hvis "node -watch index.js" kjøres, vil prosessen bli automatisk omstart når index.js endres).
  • For alle utgående HTTP/HTTPS-tilkoblinger er støtte for HTTP 1.1 Keep-Alive-mekanismen aktivert, som lar tilkoblingen være åpen i en viss tid for å behandle flere HTTP-forespørsler innenfor samme tilkobling. Keep-Alive forventes å forbedre gjennomstrømning og ytelse. Som standard er tidsavbruddet for åpen tilkobling satt til 5 sekunder. Støtte for å analysere Keep-Alive HTTP-headeren i serversvar er lagt til HTTP-klientimplementeringen, og automatisk frakobling av inaktive klienter som bruker Keep-Alive er lagt til Node.js HTTP-serverimplementeringen.
  • WebCrypto API har blitt overført til den stabile kategorien, med unntak av funksjoner som bruker Ed25519, Ed448, X25519 og X448 algoritmer. For å få tilgang til WebCrypto-modulen kan du nå bruke globalThis.crypto eller require('node:crypto').webcrypto.
  • Støtte for sporingsverktøyene DTrace, SystemTap og ETW (Event Tracing for Windows) er fjernet, og vedlikeholdet av disse ble ansett som upassende på grunn av kompleksiteten i å holde den oppdatert i mangel av en skikkelig støtteplan.

Node.js-plattformen kan brukes både for serversidestøtte av webapplikasjoner, og for å lage vanlige klient- og servernettverksprogrammer. For å utvide funksjonaliteten til applikasjoner for Node.js er det utarbeidet en stor samling av moduler, der du kan finne moduler med implementering av HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3-servere og klienter, moduler for integrasjon med ulike web-rammeverk, WebSocket- og Ajax-behandlere , koblinger til DBMS (MySQL, PostgreSQL, SQLite, MongoDB), malmotorer, CSS-motorer, implementeringer av kryptografiske algoritmer og autorisasjonssystemer (OAuth), XML-parsere.

For å håndtere et stort antall parallelle forespørsler, bruker Node.js en asynkron kodeutførelsesmodell basert på ikke-blokkerende hendelsesbehandling og definering av tilbakeringingsbehandlere. Støttede metoder for multipleksing av tilkoblinger inkluderer epoll, kqueue, /dev/poll og select. For å multiplekse tilkoblinger brukes libuv-biblioteket, som er et tillegg til libev på Unix-systemer og til IOCP på Windows. Libeio-biblioteket brukes til å lage en trådpool, og c-ares er integrert for å utføre DNS-spørringer i en ikke-blokkerende modus. Alle systemanrop som forårsaker blokkering utføres i trådbasen og sender deretter, i likhet med signalbehandlere, resultatet av arbeidet tilbake gjennom et ikke navngitt rør. Utførelse av JavaScript-kode sikres gjennom bruk av V8-motoren utviklet av Google (i tillegg utvikler Microsoft en versjon av Node.js med Chakra-Core-motoren).

I kjernen ligner Node.js på Perl AnyEvent, Ruby Event Machine, Python Twisted-rammeverket og implementeringen av hendelser i Tcl, men hendelsesløkken i Node.js er skjult for utvikleren og ligner hendelsesbehandling i en nettapplikasjon kjører i nettleseren. Når du skriver applikasjoner for node.js, er det nødvendig å ta hensyn til detaljene ved hendelsesdrevet programmering, for eksempel, i stedet for å gjøre "var result = db.query("select..");" med å vente på ferdigstillelse av arbeidet og påfølgende behandling av resultatene, bruker Node.js prinsippet om asynkron utførelse, dvs. koden transformeres til "db.query("velg..", funksjon (resultat) {resultatbehandling});", der kontrollen umiddelbart vil gå over til videre kode, og søkeresultatet vil bli behandlet etter hvert som data kommer.

Kilde: opennet.ru

Legg til en kommentar