Lëshimi i platformës JavaScript në anën e serverit Node.js 14.0

Ndodhi lirimin Nyja.js 14.0,platforma për ekzekutimin e aplikacioneve të rrjetit në JavaScript. Node.js 14.0 është një degë e mbështetjes afatgjatë, por ky status do të caktohet vetëm në tetor, pas stabilizimit. Node.js 14.0 do të mbështetet të kryhet deri në prill 2023. Mirëmbajtja e degës së mëparshme LTS të Node.js 12.0 do të zgjasë deri në prill 2022 dhe një vit përpara degës së fundit LTS 10.0 deri në prill 2021. Mbështetja për degën e skenës 13.x do të përfundojë në qershor të këtij viti.

Kryesore përmirësime:

  • Aftësia për të gjeneruar në fluturim ose pas ndodhjes së ngjarjeve të caktuara është stabilizuar raportet diagnostike, të cilat shfaqin ngjarje që ndihmojnë në diagnostikimin e problemeve të tilla si përplasjet, degradimi i performancës, rrjedhjet e kujtesës, ngarkesa e madhe e CPU-së, dalje e papritur e gabimeve, etj.
  • U shtua mbështetje eksperimentale API Hapësira ruajtëse lokale e asinkronizuar me zbatimin e klasës AsyncLocalStorage, e cila mund të përdoret për të krijuar gjendje asinkrone me mbajtës të bazuar në thirrjet dhe premtimet e kthimit të thirrjeve. AsyncLocalStorage ju lejon të ruani të dhëna gjatë përpunimit të një kërkese në ueb, që të kujton hapësirën e ruajtjes lokale në gjuhë të tjera.
  • U hoq mesazhi paralajmërues për veçorinë eksperimentale gjatë ngarkimit modulet ECMAScript 6 lidhur dhe eksportuar duke përdorur deklaratat e importit dhe eksportit. Në të njëjtën kohë, zbatimi i moduleve ESM në vetvete mbetet eksperimental.
  • Motori V8 i përditësuar në version 8.1 (1, 2, 3), i cili përfshin optimizime të reja të performancës dhe veçori të tilla si operatori i ri i lidhjes logjike "??" (kthen operandin e djathtë nëse operandi i majtë është NULL ose i papërcaktuar, dhe anasjelltas), operatori "?." për një kontroll një herë të të gjithë zinxhirit të pronave ose thirrjeve (për shembull, "db?.user?.name?.length" pa kontrolle paraprake), metodën Intl.DisplayName për marrjen e emrave të lokalizuar, etj.
  • U krye një rishikim i API-së Streams, që synonte përmirësimin e qëndrueshmërisë së API-ve të Streams dhe eliminimin e dallimeve në sjelljen e pjesëve bazë të Node.js. Për shembull, sjellja e http.OutgoingMessage është afër stream.Writable dhe net.Socket është e ngjashme me stream.Duplex. Opsioni autoDestroy është vendosur në "true" si parazgjedhje, që do të thotë thirrja "_destroy" pas përfundimit.
  • U shtua mbështetje eksperimentale API WASI (Ndërfaqja e sistemit WebAssembly), duke siguruar ndërfaqe softuerike për ndërveprim të drejtpërdrejtë me sistemin operativ (POSIX API për të punuar me skedarë, priza, etj.).
  • Kërkesa të shtuara për versionet minimale përpiluesit dhe platformat: macOS 10.13 (High Sierra), GCC 6, Windows më i ri 7/2008R2.

Le të kujtojmë se platforma Node.js mund të përdoret si për mbështetjen e aplikacioneve në ueb nga ana e serverit, ashtu edhe për krijimin e programeve të zakonshme të rrjetit të klientit dhe serverit. Për të zgjeruar funksionalitetin e aplikacioneve për Node.js, një numër i madh i koleksioni i moduleve, në të cilat mund të gjeni module me implementimin e serverëve dhe klientëve HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3, module për integrim me korniza të ndryshme ueb, trajtues WebSocket dhe Ajax, lidhës me DBMS (MySQL, PostgreSQL, SQLite , MongoDB ), motorët e shablloneve, motorët CSS, implementimet e algoritmeve kriptografike dhe sistemet e autorizimit (OAuth), analizuesit XML.

Për të trajtuar një numër të madh kërkesash paralele, Node.js përdor një model të ekzekutimit të kodit asinkron bazuar në përpunimin e ngjarjeve jo-bllokuese dhe përcaktimin e mbajtësve të kthimit të thirrjes. Metodat e mbështetura për lidhjet e multipleksimit përfshijnë epoll, kqueue, /dev/poll dhe select. Biblioteka përdoret për lidhje të shumëfishta libuv, e cila është një superstrukturë mbi liroj në sistemet Unix dhe mbi IOCP në Windows. Një bibliotekë përdoret për të krijuar një grup thread libeio, për kryerjen e pyetjeve DNS në modalitetin jo-bllokues është i integruar c-ares. Të gjitha thirrjet e sistemit që shkaktojnë bllokim ekzekutohen brenda grupit të thread dhe më pas, si mbajtësit e sinjalit, kalojnë rezultatin e punës së tyre përsëri përmes një tubi pa emër. Ekzekutimi i kodit JavaScript sigurohet nëpërmjet përdorimit të një motori të zhvilluar nga Google V8 (Përveç kësaj, Microsoft po zhvillon një version të Node.js me motorin Chakra-Core).

Në thelbin e tij, Node.js është i ngjashëm me kornizat Perl AnyEvent, Makina e ngjarjeve rubin, Python Twisted и zbatimi ngjarjet në Tcl, por cikli i ngjarjeve në Node.js është i fshehur nga zhvilluesi dhe i ngjan trajtimit të ngjarjeve në një aplikacion ueb që ekzekutohet në një shfletues. Kur shkruani aplikacione për node.js, është e nevojshme të merren parasysh specifikat e programimit të drejtuar nga ngjarjet, për shembull, në vend që të bëni "var result = db.query("select..");" me pritjen e përfundimit të punës dhe përpunimin e mëvonshëm të rezultateve, Node.js përdor parimin e ekzekutimit asinkron, d.m.th. kodi transformohet në “db.query(“select..”, funksion (rezultat) {rezultat processing});”, në të cilin kontrolli do të kalojë menjëherë në kodin e mëtejshëm dhe rezultati i pyetjes do të përpunohet me mbërritjen e të dhënave. .

Burimi: opennet.ru

Shto një koment