Utgivelse av JavaScript-plattformen på serversiden Node.js 14.0

fant sted utgivelse Node.js 14.0,plattformer for å kjøre nettverksapplikasjoner i JavaScript. Node.js 14.0 er en langsiktig støttegren, men denne statusen vil først bli tildelt i oktober, etter stabilisering. Node.js 14.0 vil bli støttet bli utført til april 2023. Vedlikehold av den forrige LTS-grenen til Node.js 12.0 vil vare til april 2022, og året før siste LTS-gren 10.0 til april 2021. Støtte for 13.x staging-grenen avsluttes i juni i år.

Den viktigste forbedringer:

  • Evnen til å generere i farten eller ved forekomst av visse hendelser er stabilisert diagnostiske rapporter, som viser hendelser som hjelper til med å diagnostisere problemer som krasjer, ytelsesforringelse, minnelekkasjer, stor CPU-belastning, uventet feilutgang, etc.
  • Lagt til eksperimentell API-støtte Asynkron lokal lagring med implementering av AsyncLocalStorage-klassen, som kan brukes til å lage asynkron tilstand med behandlere basert på tilbakeringing og løfter. AsyncLocalStorage lar deg lagre data mens en nettforespørsel behandles, noe som minner om trådlokal lagring på andre språk.
  • Fjernet advarsel om eksperimentell funksjon ved lasting moduler ECMAScript 6 koblet til og eksportert ved hjelp av import- og eksporterklæringer. Samtidig forblir implementeringen av ESM-moduler eksperimentell.
  • V8-motor oppdatert til versjon 8.1 (1, 2, 3), som inkluderer nye ytelsesoptimaliseringer og funksjoner som den nye logiske sammenkoblingsoperatøren "??" (returnerer høyre operand hvis venstre operande er NULL eller udefinert, og omvendt), "?."-operatoren for en engangssjekk av hele kjeden av egenskaper eller anrop (for eksempel "db?.user?.name?.length" uten foreløpige kontroller), Intl.DisplayName-metoden for å få lokaliserte navn osv.
  • En revisjon av Streams API ble utført, med sikte på å forbedre konsistensen til Streams APIer og eliminere forskjeller i oppførselen til de grunnleggende delene av Node.js. For eksempel er oppførselen til http.OutgoingMessage nær stream.Writable, og net.Socket ligner på stream.Duplex. AutoDestroy-alternativet er satt til "true" som standard, noe som betyr å kalle "_destroy" etter fullføring.
  • Lagt til eksperimentell API-støtte VAR JEG (WebAssembly systemgrensesnitt), gir programvaregrensesnitt for direkte interaksjon med operativsystemet (POSIX API for arbeid med filer, sockets, etc.).
  • Økte krav til minimale versjoner kompilatorer og plattformer: macOS 10.13 (High Sierra), GCC 6, Windows nyere 7/2008R2.

La oss huske at Node.js-plattformen kan brukes både for serverstøtte for webapplikasjoner og for å lage vanlige klient- og servernettverksprogrammer. For å utvide funksjonaliteten til applikasjoner for Node.js, et stort antall samling av moduler, der du kan finne moduler med implementering av servere og klienter HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3, 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. Biblioteket brukes til å multiplekse tilkoblinger libuv, som er en overbygning over libev på Unix-systemer og over IOCP på Windows. Et bibliotek brukes til å lage en trådpool libeio, for å utføre DNS-spørringer i ikke-blokkerende modus er integrert c-arer. 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 ved bruk av en motor utviklet av Google V8 (I tillegg utvikler Microsoft en versjon av Node.js med Chakra-Core-motoren).

I kjernen ligner Node.js på rammeverk Perl AnyEvent, Ruby Event Machine, Python Twisted и gjennomføring hendelser i Tcl, men hendelsesløkken i Node.js er skjult for utvikleren og ligner hendelseshåndtering i en nettapplikasjon som kjører i en nettleser. Når du skriver applikasjoner for node.js, er det nødvendig å ta hensyn til spesifikasjonene 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 inn. .

Kilde: opennet.ru

Legg til en kommentar