Server-side JavaScript Node.js 14.0 release

tog plats släpp Node.js 14.0,plattformar för att köra nätverksapplikationer i JavaScript. Node.js 14.0 är en långsiktig supportgren, men denna status kommer först att tilldelas i oktober, efter stabilisering. Node.js 14.0 kommer att stödjas genomföras till april 2023. Underhållet av den tidigare LTS-grenen av Node.js 12.0 kommer att pågå till april 2022, och året innan, LTS-gren 10.0 till april 2021. Stödet för 13.x staging-grenen upphör i juni i år.

Den huvudsakliga förbättringar:

  • Förmågan att generera i farten eller vid uppkomsten av vissa händelser har stabiliserats diagnostiska rapporter, som visar händelser som hjälper till att diagnostisera problem som krascher, prestandaförsämring, minnesläckor, hög CPU-belastning, oväntade felutdata, etc.
  • Lade till experimentellt API-stöd Asynkroniserad lokal lagring med implementeringen av klassen AsyncLocalStorage, som kan användas för att skapa asynkront tillstånd med hanterare baserat på callback-anrop och löften. AsyncLocalStorage låter dig lagra data medan en webbförfrågan bearbetas, vilket påminner om trådlokal lagring på andra språk.
  • Tog bort varningsmeddelande om experimentfunktion vid laddning moduler ECMAScript 6 anslutna och exporterade med import- och exportutlåtanden. Samtidigt är själva implementeringen av ESM-moduler experimentell.
  • V8-motor uppdaterad till version 8.1 (1, 2, 3), som inkluderar nya prestandaoptimeringar och funktioner som den nya logiska sammankopplingsoperatorn "??" (returnerar den högra operanden om den vänstra operanden är NULL eller odefinierad, och vice versa), operatorn "?." för en engångskontroll av hela kedjan av egenskaper eller anrop (till exempel “db?.user?.name?.length” utan preliminära kontroller), metoden Intl.DisplayName för att erhålla lokaliserade namn, etc.
  • En revidering av Streams API genomfördes, i syfte att förbättra konsekvensen i Streams API och eliminera skillnader i beteendet hos de grundläggande delarna av Node.js. Till exempel är beteendet för http.OutgoingMessage nära stream.Writable, och net.Socket liknar stream.Duplex. Alternativet autoDestroy är inställt på "true" som standard, vilket innebär att anropa "_destroy" när det är klart.
  • Lade till experimentellt API-stöd VAR JAG (WebAssembly System Interface), tillhandahåller mjukvarugränssnitt för direkt interaktion med operativsystemet (POSIX API för att arbeta med filer, sockets, etc.).
  • Ökade krav på minimala versioner kompilatorer och plattformar: macOS 10.13 (High Sierra), GCC 6, Windows nyare 7/2008R2.

Låt oss komma ihåg att Node.js-plattformen kan användas både för serverstöd för webbapplikationer och för att skapa vanliga klient- och servernätverksprogram. För att utöka funktionaliteten av applikationer för Node.js, ett stort antal samling av moduler, där du kan hitta moduler med implementering av servrar och klienter HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3, moduler för integration med olika webbramverk, WebSocket och Ajax-hanterare, kopplingar till DBMS (MySQL, PostgreSQL, SQLite , MongoDB ), mallmotorer, CSS-motorer, implementeringar av kryptografiska algoritmer och auktoriseringssystem (OAuth), XML-tolkare.

För att hantera ett stort antal parallella förfrågningar använder Node.js en asynkron kodexekveringsmodell baserad på icke-blockerande händelsebearbetning och definierande av återuppringningshanterare. Metoder som stöds för multiplexering av anslutningar inkluderar epoll, kqueue, /dev/poll och select. Biblioteket används för att multiplexa anslutningar libuv, som är en överbyggnad över libev på Unix-system och över IOCP på Windows. Ett bibliotek används för att skapa en trådpool libeio, för att utföra DNS-frågor i icke-blockerande läge är integrerad c-ares. Alla systemanrop som orsakar blockering exekveras inom trådpoolen och skickar sedan, som signalhanterare, resultatet av sitt arbete tillbaka genom ett namnlöst rör. Exekvering av JavaScript-kod säkerställs genom användning av en motor som utvecklats av Google V8 (Dessutom utvecklar Microsoft en version av Node.js med Chakra-Core-motorn).

I sin kärna liknar Node.js ramverk Perl AnyEvent, Ruby Event Machine, Python Twisted и genomförande händelser i Tcl, men händelseslingan i Node.js är dold för utvecklaren och liknar händelsehantering i en webbapplikation som körs i en webbläsare. När du skriver applikationer för node.js är det nödvändigt att ta hänsyn till detaljerna i händelsestyrd programmering, till exempel istället för att göra "var result = db.query("select..");" med att vänta på slutförandet av arbetet och efterföljande bearbetning av resultaten använder Node.js principen om asynkron exekvering, d.v.s. koden omvandlas till "db.query("välj..", funktion (resultat) {resultatbearbetning});", där kontrollen omedelbart övergår till ytterligare kod, och frågeresultatet kommer att bearbetas när data kommer in. .

Källa: opennet.ru

Lägg en kommentar