Platforma serverike JavaScript Node.js 21.0 është e disponueshme.

Ishte lëshuar Node.js 21.0, platforma për ekzekutimin e aplikacioneve rrjetore në gjuhën JavaScript. Mbështetje për degën Node.js 21.0 do të ofrohet për 6 muaj. Në ditët në vijim do të përfundojë stabilizimi i degës Node.js 20, e cila do të marrë statusin LTS dhe do të mbështetet deri në prill 2026. Mirëmbajtja e degës së mëparshme LTS, Node.js 18.0, do të vazhdojë deri në shtator 2025, ndërsa mbështetje për degën e mëparshme LTS 16.0 do të vazhdojë deri në prill 2024.

Përmirësimet kryesore:

  • API-ja Fetch Ă«shtĂ« shpallur si stabile, e cila Ă«shtĂ« e destinuar pĂ«r ngarkimin e burimeve nĂ« rrjet dhe thjeshton shkrimin e kodit tĂ« pĂ«rgjithshĂ«m JavaScript, tĂ« pĂ«rshtatshĂ«m pĂ«r punĂ« nĂ« anĂ«n e serverit dhe klientit. Implementimi Ă«shtĂ« i bĂ«rĂ« mbi kodin nga klienti HTTP/1.1 undici dhe Ă«shtĂ« sa mĂ« afĂ«r API-sĂ« tĂ« ngjashme qĂ« ofrohet nĂ« shfletues. API pĂ«rfshin metodĂ«n fetch() dhe objektet Headers, Request dhe Response, qĂ« pĂ«rfaqĂ«sojnĂ« titujt HTTP, kĂ«rkesĂ«n dhe pĂ«rgjigjen. const res = await fetch('https://nodejs.org/api/documentation.json'); if (res.ok) { const data = await res.json(); console.log(data); }
  • MbĂ«shtetje pĂ«r API-nĂ« WebStreams Ă«shtĂ« stabilizuar, e cila ofron qasje nĂ« streams tĂ« dhĂ«nash tĂ« marra nĂ« rrjet. API-ja lejon shtimin e pĂ«rpunuesve tĂ« tu, qĂ« punojnĂ« me tĂ« dhĂ«nat ndĂ«rkohĂ« qĂ« informatat po mbĂ«rrijnĂ« nĂ« rrjet, pa pritur qĂ« e gjithĂ« skedari tĂ« ngarkohet. NĂ« Node.js janĂ« tĂ« disponueshĂ«m objekte tĂ« tilla si ReadableStream*, TransformStream*, WritableStream*, TextEncoderStream, TextDecoderStream, CompressionStream dhe DecompressionStream.
  • ËshtĂ« shtuar njĂ« implementim eksperimental i klientit WebSocket, i cili Ă«shtĂ« i pajtueshĂ«m me shfletuesit.. PĂ«r tĂ« aktivizuar mbĂ«shtetje pĂ«r WebSocket Ă«shtĂ« parashikuar flaka «—experimental-websocket».
  • ËshtĂ« shtuar njĂ« mod eksperimental i pĂ«rdorimit si parazgjedhje i implementimit tĂ« moduleve JavaScript ESM (ECMAScript Modules, aplikohet nĂ« modulet pĂ«r shfletuesit) nĂ« vend tĂ« CommonJS (specifik pĂ«r Node.js). Ndryshimi nuk prek modulet, formati i tĂ« cilave Ă«shtĂ« saktĂ«sisht i pĂ«rcaktuar pĂ«rmes fushĂ«s «type» nĂ« package.json, e cila Ă«shtĂ« e caktuar pĂ«rmes flakĂ«s «—input-type» ose Ă«shtĂ« e dukshme pĂ«r shkak tĂ« zgjatjes sĂ« skedarit (.mjs pĂ«r ESM, .cjs pĂ«r CommonJS). MegjithatĂ«, modulet qĂ« eksplisit nuk pĂ«rcaktohen si CommonJS (p.sh., kanĂ« zgjatjen «.js»), duke aktivizuar modin e ri do tĂ« perceptohen si module ESM. PĂ«r tĂ« aktivizuar cilĂ«simet e reja tĂ« moduleve Ă«shtĂ« propozuar flaka «—experimental-default-type».
  • Motori V8 Ă«shtĂ« pĂ«rditĂ«suar nĂ« versionin 11.8, i aplikuar nĂ« Chromium 118, nĂ« tĂ« cilin Ă«shtĂ« paraqitur mbĂ«shtetje pĂ«r metodĂ«n ArrayBuffer.prototype.transfer, mundĂ«sia e grumbullimt tĂ« array-ve (metoda groupBy) dhe instrukcionet WebAssembly pĂ«r pĂ«rpunimin e konstanteve (i32.add, i32.sub, i32.mul, i64.add, i64.sub dhe i64.mul).
  • PĂ«rkrahja e procesorit globalPreload Ă«shtĂ« ndalur, nĂ« vend tĂ« tij pĂ«r konfigurimin e moduleve duhet tĂ« pĂ«rdoren thirrjet register dhe initialize.
  • Funksionit fs.writeFile i Ă«shtĂ« shtuar opsioni "flush" pĂ«r tĂ« forcuar shkarkimin e tĂ« dhĂ«nave nĂ« pajisje pas çdo operacioni tĂ« shkrimit.
  • Performanca e kodit tĂ« lidhur me analizĂ«n e URL-ve, API fetch, streams, node:fs dhe HTTP Ă«shtĂ« pĂ«rmirĂ«suar.
  • Objekti global navigator Ă«shtĂ« shtuar. PĂ«r shembull, pĂ«r tĂ« marrĂ« tĂ« dhĂ«na mbi numrin e bĂ«rthamave tĂ« CPU-sĂ«, mund tĂ« pĂ«rdoret prona navigator.hardwareConcurrency.
  • NĂ« parametrin "--test" Ă«shtĂ« shtuar mbĂ«shtetje pĂ«r glob-maskat pĂ«r zgjedhjen e testeve qĂ« duhet tĂ« ekzekutohen (pĂ«r shembull, mund tĂ« specifikohet "--test **/*.test.js.").
  • Menaxheri i paketave npm 10.2.0 dhe parseri llhttp 9.1.2, tĂ« cilĂ«t pĂ«rfshihen nĂ« grup, janĂ« pĂ«rditĂ«suar.
  • KĂ«tu Ă«shtĂ« ndaluar mbĂ«shtetja pĂ«r Visual Studio 2019 dhe versionet e macOS mĂ« tĂ« vjetra se 11.0.

Platforma Node.js mund të përdoret për mbështetje serverike të funksionimit të aplikacioneve Web, si dhe për krijimin e aplikacioneve 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ë gjenden module me implementime serverësh dhe klientë HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3, module për integrimin me framework-e të ndryshme web, trajtues të WebSocket dhe Ajax, lidhës për DB (MySQL, PostgreSQL, SQLite, MongoDB), motorë të templativëve, engine CSS, implementime të algoritmeve kriptografikë dhe sisteme autorizimi (OAuth), parserë XML.

Për të siguruar përpunimin e një numri të madh kërkesash paralel, Node.js përdor një model asinkron të ekzekutimit të kodit, i bazuar në trajtimin e ngjarjeve në modusin jo-bllokues dhe përcaktimin e handler-ave të callback. Metodat e mbështetura për multipleximin e lidhjeve përfshijnë 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ë puli të thread-eve, përdoret biblioteka libeio, ndërsa për ekzekutimin e kërkesave DNS në mod të jo-bllokues, është integruar c-ares. Të gjitha thirrjet sistemore qe shkaktojnë bllokim, ekzekutohen brenda pulit të thread-eve dhe më pas, ashtu si dhe handler-at e sinjalit, përcjellin rezultatin e punës së tyre pas një kanali të paemëruar (pipe). Ekzekutimi i kodit JavaScript sigurohet përmes përdorimit të motorit V8 të zhvilluar nga kompania Google (përveç kësaj, Microsoft po 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 trajtimit të ngjarjeve (event loop) në Node.js është i fshehur nga zhvilluesi dhe përngjan me trajtimin e ngjarjeve në një aplikacion web që funksionon në shfletues. Kur shkruani aplikacione për node.js, është e domosdoshme të merret parasysh specifika e programimit të orientuar nga ngjarjet, për shembull, në vend që të ekzekutohet "var result = db.query('select..');" duke pritur për përfundimin dhe përpunimin e rezultateve, 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 e mëtejshëm, dhe rezultati i kërkesës do të përpunohen ndërsa vijnë të dhënat.

Burimi: opennet.ru

Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster