E disponueshme platforma JavaScript nga ana e serverit Node.js 18.0

U lëshua Node.js 18.0, një platformë për ekzekutimin e aplikacioneve të rrjetit në JavaScript. Node.js 18.0 është klasifikuar si një degë e mbështetjes afatgjatë, por ky status do të caktohet vetëm në tetor, pas stabilizimit. Node.js 18.x do të mbështetet deri në prill 2025. Mirëmbajtja e degës së mëparshme LTS të Node.js 16.x do të zgjasë deri në prill 2024 dhe një vit përpara degës së fundit LTS 14.x deri në prill 2023. Dega 12.x LTS do të ndërpritet më 30 prill dhe dega e skenimit Node.js 17.x do të ndërpritet më 1 qershor.

Përmirësimet kryesore:

  • Motori V8 është përditësuar në versionin 10.1, i cili përdoret në Chromium 101. Krahasuar me versionin 17.9.0 të Node.js, tani ka mbështetje për veçori të tilla si metodat findLast dhe findLastIndex për gjetjen e elementeve në lidhje me fundin e një grup dhe funksioni Intl.supportedValuesOf. API e përmirësuar Intl.Locale. Inicializimi i fushave të klasës dhe metodave private është përshpejtuar.
  • API eksperimentale fetch() është aktivizuar si parazgjedhje, i krijuar për ngarkimin e burimeve në rrjet. Zbatimi bazohet në kodin nga klienti undici HTTP/1.1 dhe është sa më afër API-së së ngjashme të ofruar në shfletues. Kjo përfshin mbështetjen për ndërfaqet FormData, Headers, Request dhe Response për manipulimin e titujve të kërkesës dhe përgjigjes HTTP. const res = await fetch('https://nodejs.org/api/documentation.json'); if (res.ok) {const data = await res.json(); konsol.log(të dhëna); }
  • Është shtuar një zbatim eksperimental i Web Streams API, duke siguruar akses në rrjedhat e të dhënave të marra përmes rrjetit. API bën të mundur shtimin e mbajtësve tuaj për të punuar me të dhënat ndërsa informacioni mbërrin përmes rrjetit, pa pritur që të shkarkohet i gjithë skedari. Objektet tani të disponueshme në Node.js përfshijnë ReadableStream*, TransformStream*, WritableStream*, TextEncoderStream, TextDecoderStream, CompressionStream dhe DecompressionStream.
  • Blob API është zhvendosur në stabile, duke ju lejuar të përmbledhni të dhëna të papërpunuara të pandryshueshme për përdorim të sigurt në temat e ndryshme të punëtorëve.
  • BroadcastChannel API është bërë i qëndrueshëm, duke ju lejuar të organizoni shkëmbimin e mesazheve në modalitetin asinkron në formatin "një dërgues - shumë marrës".
  • U shtua nyja e modulit eksperimental: testi për krijimin dhe ekzekutimin e testeve në JavaScript që kthejnë rezultatet në formatin TAP (Test Anything Protocol).
  • Ofrohet gjenerimi i asambleve të gatshme për Red Hat Enterprise Linux (RHEL) 8 dhe shpërndarje të tjera të bazuara në Glibc 2.28+, duke përfshirë Debian 10 dhe Ubuntu 20.04, si dhe për macOS 10.15+. Për shkak të problemeve me ndërtimin e motorit V8, krijimi i ndërtimeve 32-bit për Windows është ndalur përkohësisht.
  • Ofroi një opsion eksperimental për të ndërtuar një Node.js të ekzekutueshëm me komponentë të zgjedhur nga përdoruesi të inicializuar në fillim. Për të përcaktuar komponentët fillestarë, opsioni “--node-snapshot-main” është shtuar në skriptin e ndërtimit të konfigurimit, për shembull, “./configure —node-snapshot-main=marked.js; nyja e emrit"

Platforma Node.js mund të përdoret si për mirëmbajtjen e serverëve të aplikacioneve në ueb ashtu edhe për krijimin e programeve të rregullta të rrjetit të klientëve dhe serverëve. Për të zgjeruar funksionalitetin e aplikacioneve për Node.js, është përgatitur një koleksion i madh modulesh, në të cilat mund të gjeni module me implementimin e serverëve dhe klientëve HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3, module për integrim. me korniza të ndryshme ueb, mbajtës të WebSocket dhe Ajax, lidhës DBMS (MySQL, PostgreSQL, SQLite, MongoDB), motorë shabllonesh, motorë CSS, zbatime të algoritmeve kripto dhe sisteme autorizimi (OAuth), analizues XML.

Për të siguruar përpunimin e një numri të madh kërkesash paralele, Node.js përdor një model të ekzekutimit të kodit asinkron bazuar në trajtimin e ngjarjeve jo-bllokuese dhe përkufizimin e mbajtësve të kthimit të thirrjeve. Metodat e mbështetura për lidhjet e multipleksimit janë epoll, kqueue, /dev/poll dhe zgjidhni. Për multipleksimin e lidhjeve, përdoret biblioteka libuv, e cila është një shtesë për libev në sistemet Unix dhe IOCP në Windows. Biblioteka libeio përdoret për të krijuar një grup thread dhe c-ares është i integruar për të kryer pyetje DNS në modalitetin jo-bllokues. Të gjitha thirrjet e sistemit që shkaktojnë bllokim ekzekutohen brenda grupit të thread dhe më pas, si mbajtësit e sinjalit, transferojnë rezultatin e punës së tyre përsëri përmes një tubi (tub) pa emër. Ekzekutimi i kodit JavaScript sigurohet përmes përdorimit të motorit V8 të zhvilluar nga Google (përveç kësaj, Microsoft po zhvillon një version të Node.js me motorin Chakra-Core).

Në thelb, Node.js është i ngjashëm me Perl AnyEvent, Ruby Event Machine, Python Twisted kornizat dhe zbatimin e ngjarjeve Tcl, por cikli i ngjarjes në Node.js është i fshehur nga zhvilluesi dhe i ngjan trajtimit të ngjarjeve në një aplikacion ueb që ekzekutohet në shfletues. Kur shkruani aplikacione për node.js, duhet të merrni parasysh specifikat e programimit të drejtuar nga ngjarjet, për shembull, në vend që të bëni "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, d.m.th. kodi transformohet në "db.query("select..", function (rezultat) {result processing});", në të cilin kontrolli do të kalojë në çast në kodin e mëtejshëm dhe rezultati i pyetjes do të përpunohet me mbërritjen e të dhënave.

Burimi: opennet.ru

Shto një koment