lëshimi , platforma për ekzekutimin e aplikacioneve të rrjetit në gjuhën JavaScript. Node.js 14.0 i përket degëve me mbështetje afatgjatë, por statusi i këtij të fundit do t'i jepet vetëm në tetor, pas stabilizimit. Mbështetje për Node.js 14.0 do të deri në prill 2023. Mbështetje për degën e kaluar LTS Node.js 12.0 do të vazhdojë deri në prill 2022, ndërsa për degën e mëparshme LTS 10.0 deri në prill 2021. Mbështetje për degën ndërmjetëse 13.x do të mbyllet në qershor të këtij viti.
Main :
- Stabilizimi i mundësisë për gjenerimin në kohë reale ose me ndodhin e disa ngjarjeve , në të cilat pasqyrohen ngjarjet që ndihmojnë në diagnostikimin e problemeve si crash-et, renia e performancës, rrjedhjet e memories, ngarkesa e madhe në CPU, rezultati i papritur i gabimeve, etj.
- Shtuar mbështetje eksperimentale për API-në me implementimin e klasës AsyncLocalStorage, e cila mund të përdoret për të krijuar gjendje asinkrone me trajtues të bazuar në thirrjet e callback dhe promise. AsyncLocalStorage lejon ruajtjen e të dhënave gjatë përpunimit të kërkesës web, duke kujtuar sistemet lokale për fije të veçanta (Thread-Local Storage) në gjuhë të tjera.
- U hoq paralajmërimi për mbështetje eksperimentale gjatë ngarkimit që janë të importuar dhe eksportuar përmes shprehjeve import dhe export. Implementimi i moduleve ESM mbetet ende eksperimental.
- Motori V8 është përditësuar në versionin (, , ), në të cilën janë bërë optimizime të reja të performancës dhe janë shtuar risitë si operatori logjik i bashkimit «??» (kthen operandin e djathtë, nëse operandin e majtë ka vlerën NULL ose undefined, dhe anasjelltas), operatori «?.» për kontrollin e gjithë vargjeve të pronave ose thirrjeve (p.sh. «db?.user?.name?.length» pa kontrollime paraprake), metoda Intl.DisplayName për të marrë emrat e lokalizuar, etj.
- Kryer një auditim të API-ve Streams, me qëllim përmirësimin e koherencës së ndërfaqeve të API-ve Streams dhe eliminimin e diferencave në sjelljen e pjesëve thelbësore të Node.js. P.sh., sjellja e http.OutgoingMessage është afruar me stream.Writable, dhe net.Socket me stream.Duplex. Opcioni autoDestroy në parazgjedhje është vendosur në vlerën «true», që nënkupton thirrjen e «_destroy» pas përfundimit.
- Shtuar mbështetje eksperimentale për API-në (), duke ofruar ndërfaqe për ndërshtator të drejtpërdrejtë me sistemin operativ (POSIX API për punë me skedarët, soketët, etj.).
- Janë rritur kërkesat për të kompjutorëve dhe platformave: macOS 10.13 (High Sierra), GCC 6, .
Kujtojmë se platforma Node.js mund të përdoret si për mbështetjen nga ana e serverit të funksionimit të aplikacioneve Web, ashtu edhe për krijimin e programeve të zakonshme klient-server dhe të rrjetit. Për zgjerimin e funksionalitetit të aplikacioneve për Node.js është përgatitur një , ku mund të gjenden module me implementime të serverëve dhe klientëve HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3, module për integrim me framework-e të ndryshme web, përpunues WebSocket dhe Ajax, konektorë për DBMS (MySQL, PostgreSQL, SQLite, MongoDB), motorë shabllonesh, motorë CSS, implementime të algoritmeve kriptografike dhe sistemeve të autorizimit (OAuth), si dhe parserë XML.
Për të përballuar përpunimin e një numri të madh kërkesash paralele, Node.js përdor një model asinkron të ekzekutimit të kodit, i bazuar në trajtimin e ngjarjeve në mënyrë jo-bllokuese dhe në përcaktimin e callback-handlerëve. Si metoda për multipleksimin e lidhjeve mbështeten epoll, kqueue, /dev/poll dhe select. Për multipleksimin e lidhjeve përdoret biblioteka , e cila është një shtresë shtesë mbi në sistemet Unix dhe mbi IOCP në Windows. Për krijimin e një pool-i fijesh (thread pool) përdoret biblioteka , ndërsa për ekzekutimin e kërkesave DNS në mënyrë jo-bllokuese është integruar . Të gjitha thirrjet e sistemit që shkaktojnë bllokim ekzekutohen brenda pool-it të fijeve dhe më pas, ashtu si edhe handlerët e sinjaleve, e kthejnë rezultatin e punës së tyre përmes një kanali pa emër (pipe). Ekzekutimi i kodit JavaScript sigurohet përmes përdorimit të motorit (përveç kësaj, Microsoft zhvillon një variant të Node.js me motorin Chakra-Core).
Në thelb, Node.js i ngjan framework-eve , , dhe të ngjarjeve në Tcl, por cikli i përpunimit të ngjarjeve (event loop) në Node.js është i fshehur nga zhvilluesi dhe i ngjan trajtimit të ngjarjeve në një aplikacion web që funksionon në shfletues. Gjatë zhvillimit të aplikacioneve për Node.js, duhet të merret parasysh specifika e programimit të orientuar nga ngjarjet; për shembull, në vend të ekzekutimit të «var result = db.query(«select..»);» me pritjen e përfundimit të punës dhe përpunimin pasues të rezultateve, Node.js përdor parimin e ekzekutimit asinkron, pra kodi shndërrohet në «db.query(«select..», function (result) {përpunimi i rezultatit});», ku kontrolli kalon menjëherë te kodi vijues, ndërsa rezultati i kërkesës përpunohet sapo të mbërrijnë të dhënat. .
Burimi: opennet.ru
