Të shtunën u publikua Node.js 19.0, platforma për ekzekutimin e aplikacioneve rrjetërore në gjuhën JavaScript. Node.js 19 i përket një dege me mbështetje të zakonshme, me azhurnime që do të publikohen deri në qershor 2023. Në ditët në vazhdim do të përfundojë stabilizimi i degës Node.js 18, e cila do të marrë statusin LTS dhe do të mbështetet deri në prill 2025. Mbështetje për degën e mëparshme LTS Node.js 16.0 do të vazhdojë deri në shtator 2023, ndërsa për degën e mëparshme LTS 14.0 deri në prill 2023.
Përmirësimet kryesore:
- Moti i motorit V8 është azhurnuar në versionin 10.7, e përdorur në Chromium 107. Ndryshimet në motor në krahasim me degën Node.js 18 përfshijnë implementimin e versionit të tretë të API Intl.NumberFormat, ku janë shtuar funksione të reja formatRange(), formatRangeToParts() dhe selectRange(), grupimi i seteve, mundësi të reja për përndarje dhe përcaktimin e saktësisë, mundësinë e interpretimit të vargjeve si numra decimalë. Gjithashtu janë azhurnuar varësitë llhttp 8.1.0 dhe npm 8.19.2.
- ĂshtĂ« propozuar njĂ« komandĂ« eksperimentale «node âwatch» me implementimin e njĂ« mĂ«nyre vĂ«zhgimi, e cila siguron rinasjen e procesit nĂ« rast tĂ« ndryshimit tĂ« skedarit tĂ« importuar (pĂ«r shembull, nĂ«se ekzekutohet «node âwatch index.js», procesi do tĂ« rinaset automatikisht kur tĂ« ndryshohet index.js).
- Për të gjitha lidhjet HTTP/HTTPS dërguese është aktivizuar mbështetje për mekanizmin HTTP 1.1 Keep-Alive, duke lënë lidhjen të hapur për një përkohësi të caktuar për përpunimin e shumë kërkesave HTTP brenda një lidhjeje. Parashikohet se përdorimi i Keep-Alive do të rrisë kapacitetin dhe performancën. Në mënyrë të parazgjedhur, koha e mbajtjes së lidhjes të hapur është vendosur në 5 sekonda. Implementimi i klientit HTTP ka përfshirë mbështetje për analizimin e headers HTTP Keep-Alive në përgjigjet, ndërsa implementimi i serverit HTTP Node.js ka përfshirë shkëputjen automatike të klientëve pasivë që përdorin Keep-Alive. server, ndërsa në implementimin e serverit HTTP Node.js është shtuar shkëputja automatike e klientëve inaktivë që përdorin Keep-Alive.
- API WebCrypto Ă«shtĂ« transferuar nĂ« klasĂ«n e stabilisĂ«, pĂ«rveç funksioneve qĂ« pĂ«rdorin algoritmĂ«t Ed25519, Ed448, X25519 dhe X448. PĂ«r tĂ« aksesuar modulit WebCrypto tani mund tĂ« pĂ«rdorni globalThis.crypto ose require(ânode:cryptoâ).webcrypto.
- Mbështetja për mjetet e gjurmimit DTrace, SystemTap dhe ETW (Event Tracing for Windows) është hequr, pasi mbështetja e tyre është konsideruar e panevojshme për shkak të vështirësive të mbajtjes së tyre në një formë të përditësuar pa një plan të duhur për mbështetje.
Platforma Node.js mund të përdoret si për mbështetje të serverëve të aplikacioneve Web, ashtu edhe për të krijuar programe të zakonshme klients-server të rrjeteve. 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 realizim. 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ë.
Burimi: opennet.ru
