Server-side JavaScript-plattform Node.js 18.0 tilgjengelig

Node.js 18.0 ble utgitt, en plattform for å kjøre nettverksapplikasjoner i JavaScript. Node.js 18.0 er klassifisert som en langsiktig støttegren, men denne statusen vil bli tildelt først i oktober, etter stabilisering. Node.js 18.x støttes frem til april 2025. Vedlikehold av den forrige LTS-grenen til Node.js 16.x vil vare til april 2024, og året før siste LTS-gren 14.x til april 2023. 12.x LTS-grenen vil bli avviklet 30. april, og Node.js 17.x staging-grenen vil bli avviklet 1. juni.

Hovedforbedringer:

  • V8-motoren er oppdatert til versjon 10.1, som brukes i Chromium 101. Sammenlignet med 17.9.0-utgivelsen av Node.js er det nå støtte for funksjoner som findLast- og findLastIndex-metodene for å finne elementer i forhold til slutten av en matrise, og funksjonen Intl.supportedValuesOf. Forbedret Intl.Locale API. Initialiseringen av klassefelt og private metoder har blitt fremskyndet.
  • Den eksperimentelle fetch() APIen er aktivert som standard, designet for å laste ressurser over nettverket. Implementeringen er basert på kode fra HTTP/1.1 undici-klienten og er så nært som mulig til den lignende API-en som tilbys i nettlesere. Dette inkluderer støtte for FormData, Headers, Request and Response-grensesnittene for å manipulere HTTP-forespørsels- og svarhoder. const res = await fetch('https://nodejs.org/api/documentation.json'); if (res.ok) { const data = await res.json(); console.log(data); }
  • En eksperimentell implementering av Web Streams API er lagt til, som gir tilgang til datastrømmer mottatt over nettverket. API-en gjør det mulig å legge til egne behandlere for å jobbe med data etter hvert som informasjon kommer over nettverket, uten å vente på at hele filen skal lastes ned. Objekter som nå er tilgjengelige i Node.js inkluderer ReadableStream*, TransformStream*, WritableStream*, TextEncoderStream, TextDecoderStream, CompressionStream og DecompressionStream.
  • Blob API har blitt flyttet til stabil, slik at du kan kapsle inn uforanderlige rådata for sikker bruk i forskjellige arbeidertråder.
  • BroadcastChannel API er gjort stabilt, slik at du kan organisere utvekslingen av meldinger i asynkron modus i formatet "én avsender - mange mottakere".
  • Lagt til eksperimentell modul node:test for å lage og kjøre tester i JavaScript som returnerer resultater i TAP-format (Test Anything Protocol).
  • Generering av ferdige sammenstillinger for Red Hat Enterprise Linux (RHEL) 8 og andre distribusjoner basert på Glibc 2.28+, inkludert Debian 10 og Ubuntu 20.04, samt for macOS 10.15+ er gitt. På grunn av problemer med V8-motorbyggingen, har opprettelsen av 32-bits builds for Windows blitt midlertidig stoppet.
  • Gir et eksperimentelt alternativ for å bygge en kjørbar Node.js med brukervalgte komponenter initialisert ved oppstart. For å definere startkomponentene er "--node-snapshot-main"-alternativet lagt til i configure build-skriptet, for eksempel "./configure —node-snapshot-main=marked.js; navn node"

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