U publikua Node.js 16.0, platforma për ekzekutimin e aplikacioneve rrjetore në gjuhën JavaScript. Node.js 16.0 i është caktuar statusi i një dege me mbështetje afatgjatë, por ky status do t'i jepet vetëm në përfundim të stabilizimit në tetor. Mbështetja për Node.js 16.0 do të ofrohet deri në prill 2023. Mbështetja për degën e mëparshme LTS Node.js 14.0 do të vazhdojë deri në prill 2023, ndërsa për degën më të vjetër LTS 12.0 deri në prill 2022. Mbështetja për degën LTS 10.0 do të ndërpritet pas 10 ditësh.
Përmirësimet kryesore:
- Motori V8 është azhurnuar në versionin 9.0 (në Node.js 15 ishte përdorur versioni 8.6), duke lejuar që Node.js 16 të ketë mundësi të tilla si prapa 'indices' për shprehjet e rregullta (përfshin një array me pozitat fillestare dhe përfundimtare të grupeve të përputhjeve), metoda Atomics.waitAsync (versioni asinkron i Atomics.wait), suportimi për përdorimin e fjalës kyçe await në module në nivel të lartë. Kjo ka përshpejtuar thirrjet e funksioneve, kur numri i argumenteve të kaluara nuk përputhet me parametrat e caktuar në funksion.
- API i Timers Promises është stabilizuar, duke ofruar një grup alternativ funksionesh për punën me temporizatorët që kthejnë objekte Promise, çka lejon shmangien e përdorimit të util.promisify(). import { setTimeout } from 'timers/promises'; async function run() { await setTimeout(5000); console.log('Përshëndetje, Botë!'); } run();
- Një implementim eksperimental i API Web Crypto është shtuar, i dedikuar për kryerjen e operacioneve themelore criptografike në anën e aplikacioneve web, si manipulimet me hash-et criptografike, gjenerimin dhe verifikimin e nënshkrimeve dixhitale, kodimin dhe dekodimin e të dhënave duke përdorur metoda të ndryshme enkriptimi, si dhe krijimin e numrave të rastit me siguri criptografike. API-ja parashikon gjithashtu funksione për gjenerimin dhe menaxhimin e çelësave.
- N-API (API për zhvillimin e plotësimeve) është azhurnuar në versionin 8.
- ĂshtĂ« bĂ«rĂ« kalimi nĂ« versionin e ri tĂ« menaxhuesit tĂ« paketeve NPM 7.10.
- Implementimi i klasës AbortController, i bazuar në Web API AbortController, është stabilizuar dhe lejon anulimin e sinjaleve në API të zgjedhura të bazuara në Promise.
- Mbështetja për versionin e tretë të formatit Source Map, i përdorur për të mapuar modulët e gjeneruar, të përpunuar ose të përmbledhur me kodin burimor origjinal, është stabilizuar.
- Për t'u siguruar përputhshmëria me Web API-të e vjetra, janë shtuar metodat buffer.atob(data) dhe buffer.btoa(data).
- Ka filluar formimi i ndërtimeve për pajisje të reja Apple me çipin ARM M1.
- Në platformën Linux, kërkesat për versionin e kompilatorit janë rritur në GCC 8.3.
Kujtojmë se platforma Node.js mund të përdoret si për mbështetje serveri të funksionimit të aplikacioneve Web, ashtu edhe për krijimin e programeve të zakonshme klient-server. Për të zgjeruar funksionalitetin e aplikacioneve për Node.js, është përgatitur një koleksion i madh modulash, ku mund të gjeni module me implementime. servera dhe klientë HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3, module për integrim me korniza të ndryshme web, procesorë WebSocket dhe Ajax, lidhës për DB (MySQL, PostgreSQL, SQLite, MongoDB), motorë për modelim, CSS, realizime të algoritmeve kriptografikë 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 një model asinkron për ekzekutimin e kodit, i bazuar në përpunimin e ngjarjeve në një mënyrë që nuk bllokon dhe në përcaktimin e trajtuesve të callback. Si metoda për multipleximin e lidhjeve, mbështeten metoda të tilla si epoll, kqueue, /dev/poll dhe select. Biblioteka libuv përdoret për multipleximin e lidhjeve, e cila është një shtresë mbi libev në sistemet Unix dhe mbi IOCP në Windows. Për krijimin e një vende pune (thread pool) përdoret biblioteka libeio, dhe për kryerjen e kërkesave DNS në mënyrë asinkrone është integruar c-ares. Të gjitha thirrjet në sistem që shkaktojnë bllokim ekzekutohen brenda vendeve të punës dhe më pas, si trajtuesit e sinjaleve, përcjellin rezultatin e punës së tyre përsëri përmes një kanali të paemërtuar (pipe). Ekzekutimi i kodit JavaScript sigurohet përmes angazhimit të motorit V8 të zhvilluar nga kompanitë Google (përveç kësaj, Microsoft zhvillon një variant të Node.js me motorin Chakra-Core).
Në thelb, Node.js është e ngjashme me framework-et Perl AnyEvent, Ruby Event Machine, Python Twisted dhe implementimin e ngjarjeve 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ë një aplikacion web që funksionon në shfletues. Kur shkruani aplikacione për Node.js, është e rëndësishme të merrni parasysh veçantitë e programimit të orientuar në ngjarje, për shembull, në vend të ekzekutimit të «var result = db.query(«select..»);» me pritjen e përfundimit të punës dhe përpunimi i mëvonshëm i rezultateve, Node.js përdor principin e ekzekutimit asinkron, domethënë kodi transformohet në «db.query(«select..», function (result) {përpunimi i rezultatit});», ku kontrolli do të kalojë menjëherë në kodin e mëtejmë dhe rezultati i kërkesës do të përpunohet ndërsa të dhënat mbërrijnë.
Gjithashtu, duhet përmendur se kompania Deno, e themeluar nga krijuesi i Node.js për zhvillimin e platformës së ardhshme Deno, ka marrë 4.9 milion dollarë investime. Deno ngjason me Node.js në qëllim, por përpiqet të eliminojë gabimet konceptuale të bëra në arkitekturën e Node.js dhe t'u ofrojë përdoruesve një mjedis më të sigurt. Raportohet se zgjidhjet biznesore të kompanisë Deno do të ndërtohen mbi produkte plotësisht të hapura, ndërsa modeli Open Core që ndan funksionalitetin e veçantë në një pagesë konsiderohet i papranueshëm për platformën Deno.
Burimi: opennet.ru
