Udgivelsen af server JavaScript-platformen Node.js 14.0

Har fundet sted udgivelse Node.js 14.0, platforme til udførelse af netværksapplikationer skrevet i JavaScript. Node.js 14.0 tilhører de langsigtede støttelinjer, men denne status vil først blive tildelt i oktober, efter stabilisering. Støtten til Node.js 14.0 vil blive udført indtil april 2023. Supporten for den tidligere LTS-version Node.js 12.0 vil vare til april 2022, og for den før-nu LTS-version 10.0 til april 2021. Støtten til den mellemliggende version 13.x slutter i juni i år.

Vigtige forbedringer:

  • Muligheden for at generere diagnosticeringsrapporter enten on-the-fly eller ved bestemte hændelser er stabiliseret, der afspejler hændelser, der hjælper med at diagnosticere problemer som nedbrud, ydelsesproblemer, hukommelseslækager, høj CPU-belastning, uventet fejloutput osv.
  • Eksperimentel support for API Async Local Storage med implementeringen af klassen AsyncLocalStorage, der kan bruges til at oprette asynkrone tilstande med callback-baserede håndtere og promisser. AsyncLocalStorage muliggør opbevaring af data under behandlingen af webanmodninger, svarende til lokale lagerpladser til individuelle tråde i andre sprog (Thread-Local Storage).
  • Advarselsmeddelelsen om den eksperimentelle funktion er fjernet ved indlæsning moduler ECMAScript 6 der importeres og eksporteres ved hjælp af import- og export-udtryk. Selve implementeringen af ESM-moduler forbliver dog eksperimentel.
  • V8-motoren er opdateret til version 8.1 (1, 2, 3), hvor der er foretaget nye ydeevneoptimeringer og tilføjet nyheder som den nye logiske operator for sammenslutning «??» (returnerer den højre operand, hvis den venstre operand er NULL eller undefined, og omvendt), operatoren «?.» til samtidig kontrol af hele kæden af egenskaber eller metoder (f.eks. «db?.user?.name?.length» uden forudgående kontroller), metoden Intl.DisplayName til at hente lokaliserede navne osv.
  • En revision af API Streams er gennemført, rettet mod at forbedre konsistensen af Streams API'erne og fjerne forskelle i adfærden af de grundlæggende dele af Node.js. For eksempel er adfærden for http.OutgoingMessage tilpasset stream.Writable, og net.Socket til stream.Duplex. Indstillingen autoDestroy er som standard sat til «true», hvilket betyder, at «_destroy» kaldes efter afslutningen.
  • Eksperimentel support for API WASI (WebAssembly System Interface), der tilbyder programmeringsgrænseflader til direkte interaktion med operativsystemet (POSIX API til arbejde med filer, sockets osv.).
  • Forhøjede krav til minimum versioner kompilatorer og platforme: macOS 10.13 (High Sierra), GCC 6, Windows nyere end 7/2008R2.

Vi mindes om, at Node.js-platformen kan bruges både til serveradministration af webapplikationer og til at udvikle almindelige klient- og serversnetværksprogrammer. For at udvide funktionaliteten af Node.js-applikationer er der forberedt en stor samling af moduler, hvor man kan finde moduler med implementeringer af HTTP-, SMTP-, XMPP-, DNS-, FTP-, IMAP-, POP3-servere og -klienter, moduler til integration med forskellige web-rammeværk, WebSocket- og Ajax-håndterere, forbindelser til databaser (MySQL, PostgreSQL, SQLite, MongoDB), templating-motorer, CSS-motorer, implementeringer af kryptografiske algoritmer og godkendelsessystemer (OAuth), XML-analysatorer.

For at sikre behandling af et stort antal parallelle anmodninger anvender Node.js en asynkron kodekørselsmodel baseret på hændelseshåndtering i ikke-blokerende tilstand og bestemmelse af callback-håndterere. Som metoder til multiplexing af forbindelser understøttes metoder som epoll, kqueue, /dev/poll og select. Til multiplexing af forbindelser bruges biblioteket libuv, som er et lag oven på libev i Unix-systemer og IOCP i Windows. For at oprette en trådpool (thread pool) anvendes biblioteket libeio, til at udføre DNS-anmodninger i ikke-blokerende tilstand er integreret c-ares. Alle systemopkald, der forårsager blokering, udføres inden for trådpoolen og sender derefter, ligesom signalhåndtererne, resultatet af deres arbejde tilbage via et anonymt rør (pipe). Udførelsen af JavaScript-kode sikres gennem brugen af den motor, der er udviklet af Google, V8 (yderligere udvikler Microsoft en version af Node.js med Chakra-Core-motoren).

I sin essens ligner Node.js rammeværkerne Perl AnyEvent, Ruby Event Machine, Python Twisted og implementering. Der event-loop i Node.js er skjult for udvikleren og minder om begivenhedshåndtering i en webapplikation, der kører i en browser. Ved skrivning af applikationer til node.js skal man tage hensyn til de specifikke forhold inden for begivenhedsorienteret programmering; for eksempel, i stedet for at udføre «var result = db.query(«select..»);» og vente på, at udførelsen afsluttes og derefter behandle resultaterne, benytter Node.js princippet om asynkron udførelse, hvilket betyder, at koden transformeres til «db.query(«select..», function (result) {behandling af resultat});», hvor kontrol straks overgår til den næste kode, mens resultatet af forespørgslen behandles, efterhånden som dataene modtages.

Kilde: opennet.ru

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster