lëshimi , platforma për ekzekutimin e aplikacioneve rrjet në gjuhën JavaScript. Node.js 14.0 i përket degëve me mbështetje të gjatë, por ky status do t'i pranohet 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 LTS 10.0 deri në prill 2021. Mbështetje për degën ndërmjetëse 13.x do të përfundojë në qershor të këtij viti.
Ndryshimet kryesore :
- Stabilizimi i mundësisë për të gjeneruar në fluks ose kur ndodhin ngjarje të caktuara , të cilat pasqyrojnë ngjarjet, ndihmojnë në diagnostikimin e problemeve si çarjet, rënia e performancës, humbjet e memories, ngarkesa e madhe në CPU, dalje e papritur e gabimeve etj.
- Shtuar mbështetje eksperimentale për API me implementimin e klasës AsyncLocalStorage, e cila mund të përdoret për të krijuar gjendje asinkrone me trajtues të bazuar në thirrje callback dhe promise. AsyncLocalStorage lejon ruajtjen e të dhënave gjatë përpunimit të kërkesave web, duke kujtuar magazinat lokale për fije të veçanta (Thread-Local Storage) në gjuhë të tjera.
- Këtu u hoq njoftimi për mundësinë eksperimentale gjatë ngarkimit të moduleve të importuara dhe eksportuara nëpërmjet shprehjeve import dhe export. Megjithatë, vetë implementimi i moduleve ESM ende mbetet eksperimental.
- Motor V8 është përditësuar në versionin (, , ), ku janë bërë optimizime të reja të performancës dhe janë shtuar risitë si operatori logjik i bashkimit "??" (kthen operandin e djathtë nëse operandja e majtë ka vlerë NULL ose undefined, dhe e kundërta), operatori "?." për verifikimin e të gjithë zinxhirit të pronave ose thirrjeve (p.sh. "db?.user?.name?.length" pa kontrolle paraprake), metoda Intl.DisplayName për marrjen e emrave të lokalizuar etj.
- ĂshtĂ« bĂ«rĂ« njĂ« rishikim i API-TĂ« Streams, i fokusuar nĂ« pĂ«rmirĂ«simin e koherencĂ«s sĂ« ndĂ«rfaqeve tĂ« API-ve Streams dhe eliminimin e ndryshimeve nĂ« sjelljen e pjesĂ«ve bazĂ« tĂ« Node.js. P.sh., sjellja e http.OutgoingMessage Ă«shtĂ« afruar me stream.Writable, dhe net.Socket me stream.Duplex. Opsioni autoDestroy tani Ă«shtĂ« i vendosur nĂ« "true", qĂ« nĂ«nkupton thirrjen e "_destroy" pasi pĂ«rfundon.
- Shtuar mbështetje eksperimentale për API (), që ofron ndërfaqe programimi për ndërveprimin e drejtpërdrejtë me sistemin operativ (POSIX API për punën me skedarë, socket-e etj.).
- Kërkesat për të kompilatorëve dhe platformave janë rritur: macOS 10.13 (High Sierra), GCC 6, .
Duam të kujtojmë se platforma Node.js mund të përdoret si për mbështetje të serverëve të aplikacioneve Web, ashtu edhe për krijimin e programeve të zakonshme të klientëve dhe serverëve të rrjeteve. Për të rritur funksionalitetin e aplikacioneve për Node.js, është përgatitur një koleksion i madh , ku mund të gjeni module me implementimin e serverëve dhe klientëve HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3, module për integrimin me framework-e të ndryshme web, trajtesa WebSocket dhe Ajax, lidhës për DBMS (MySQL, PostgreSQL, SQLite, MongoDB), gjenerues të shablloneve, motorë CSS, implementime të algoritmave kripto dhe sistemeve të autorizimit (OAuth), parserë XML.
Për të siguruar përpunimin e një numri të madh kërkesash paralele, Node.js përdor modelin asinkron të ekzekutimit të kodit, të bazuar në përpunimin e ngjarjeve në mënyrë jo bllokuese dhe përcaktimin e trajtesave callback. Si metoda të multiplikimit të lidhjeve, mbështeten metoda si epoll, kqueue, /dev/poll dhe select. Për multiplikimin e lidhjeve përdoret biblioteka , e cila është një shtresë mbi në sistemet Unix dhe mbi IOCP në Windows. Për krijimin e një grupi thread-ash (thread pool) përdoret biblioteka , për kryerjen e kërkesave DNS në një mod të pa bllokuar të integruar . Të gjitha thirrjet sistemore që shkaktojnë bllokim ekzekutohen brenda një pooli fshirës dhe pastaj, siç është edhe menaxhimi i sinjaleve, kthejnë rezultatin e punës së tyre përmes një kanali të pa emëruar (pipe). Ekzekutimi i kodit JavaScript sigurohet përmes angazhimit të motorit të zhvilluar nga Google (përveç kësaj, Microsoft zhvillon një variant Node.js me motorin Chakra-Core).
Në thelb, Node.js është e ngjashme me strukturat , , dhe Evenimentet në Tcl, por cikli i përpunimit të ngjarjeve (event loop) në Node.js është i fshehur nga zhvilluesi dhe i ngjan përpunimit të ngjarjeve në aplikacionet web që funksionojnë në shfletues. Kur shkruani aplikacione për node.js, duhet të keni parasysh specifikat e programimit orientuar ndaj ngjarjeve, për shembull, në vend që të realizoni 'var result = db.query('select..');' me pritje për përfundimin e punës dhe përpunimin e rezultateve të mëvonshme, në Node.js përdoret parimi i ekzekutimit asinkron, dmth kodi transformohet në 'db.query('select..', function (result) { përpunimi i rezultatit });' ku kontrolli do të kalojë menjëherë në kodin tjetër, dhe rezultati i kërkesës do të përpunohen sipas ardhjes së të dhënave.
Burimi: opennet.ru
