versjon , en plattform for å kjøre nettapplikasjoner skrevet i JavaScript. Node.js 14.0 tilhører linjene med langvarig støtte, men denne statusen vil bli tildelt først i oktober, etter stabilisering. Støtte for Node.js 14.0 vil til april 2023. Støtten til den forrige LTS-linjen, Node.js 12.0, vil vare til april 2022, mens støtten for den før det, LTS-linjen 10.0, vil vare til april 2021. Støtten for den midlertidige linjen 13.x avsluttes i juni i år.
Viktige :
- Støtten for generering av på-fly eller ved bestemte hendelser , som reflekterer hendelser som hjelper med å diagnostisere problemer som krasj, ytelsestap, minnelekkasjer, høy CPU-belastning, uventet feilmeldinger osv.
- Eksperimentell støtte for API-er med implementeringen av klassen AsyncLocalStorage, som kan brukes til å lage asynkrone tilstander med callback-baserte håndterere og løfter. AsyncLocalStorage lar deg lagre data under behandling av webforespørselen, påminner om lokalisert lagring for enkelttråder (Thread-Local Storage) i andre språk.
- Advarselen om eksperimentell funksjonalitet har blitt fjernet ved lasting som lastes og eksporteres ved hjelp av import- og export-uttrykk. Imidlertid forblir selve implementeringen av ESM-moduler fortsatt eksperimentell.
- V8-motoren er oppdatert til versjon (, , ), der det er gjort nye ytelsesoptimaliseringer og lagt til nye funksjoner, som den nye logiske sammenslåingsoperatøren «??» (returnerer høyreoperand hvis venstreoperand er NULL eller undefined, og omvendt), operatoren «?.» for engangskontroll av hele egenskapers eller metoders kjede (for eksempel «db?.user?.name?.length» uten forhåndskontroller), metoden Intl.DisplayName for å hente lokaliserte navn osv.
- En revisjon av API Streams har blitt gjennomført, rettet mot å forbedre konsistensen av Streams API-er og eliminere forskjeller i oppførselen til de grunnleggende delene av Node.js. For eksempel er oppførselen til http.OutgoingMessage nærmere stream.Writable, og net.Socket nærmere stream.Duplex. AutoDestroy-innstillingen settes som standard til «true», noe som innebærer at «_destroy» kalles etter at den er fullført.
- Eksperimentell støtte for API-er (), som gir programmeringsgrensesnitt for direkte interaksjon med operativsystemet (POSIX API for filarbeid, sokler osv.).
- Kravene til kompilatorer og plattformer: macOS 10.13 (High Sierra), GCC 6, .
Husk at Node.js-plattformen kan brukes både til serverdrift av webapplikasjoner og til å lage vanlige klient- og servernettverksprogrammer. For å utvide funksjonaliteten til applikasjoner for Node.js er det utarbeidet en stor , der du kan finne moduler som implementerer servere og klienter for HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3, moduler for integrasjon med ulike web-rammeverk, WebSocket- og Ajax-behandlere, tilkoblinger til databaser (MySQL, PostgreSQL, SQLite, MongoDB), malmotorer, CSS-motorer, implementeringer av kryptografiske algoritmer og autorisasjonssystemer (OAuth), XML-parsere.
For å sikre behandling av et stort antall parallelle forespørsel, benytter Node.js en asynkron modell for å kjøre kode, basert på hendelsesbehandling i ikke-blokkerende modus og definering av callback-håndterere. Metoder som epoll, kqueue, /dev/poll og select støttes som måter å multiplexe forbindelser. Biblioteket , som er et lag over i Unix-systemer og IOCP i Windows. For å opprette en tråd-pool brukes biblioteket , for å utføre DNS-forespørsel i ikke-blokkerende modus, er integrert. Alle systemanrop som forårsaker blokkering, utføres inne i tråd-poolen og sender deretter resultatet av arbeidet tilbake gjennom et anonymt rør (pipe), som signalbehandlere gjør. Utførelsen av JavaScript-kode skjer ved å bruke motoren utviklet av Google (Microsoft utvikler også en versjon av Node.js med Chakra-Core-motoren).
I sin essens ligner Node.js på rammeverkene , , og Hendelser i Tcl, men hendelsessløyfen (event loop) i Node.js er skjult for utvikleren og minner om behandlingen av hendelser i en nettsøknad som kjører i nettleseren. Når du skriver applikasjoner for Node.js, må du ta hensyn til spesifikasjonene for hendelsesorientert programmering, for eksempel i stedet for å kjøre «var result = db.query(«select..»);» og vente på at det skal fullføres før du behandler resultatene, bruker Node.js prinsippet om asynkron utførelse, det vil si at koden transformeres til «db.query(«select..», function (result) {behandling av resultat});», hvor kontrollen umiddelbart går videre til neste kode, og resultatet av forespørselen vil bli behandlet etter hvert som dataene kommer inn.
Kilde: opennet.ru
