Lësho platforma servere JavaScript Node.js 17.0

Lëshimi i Node.js 17.0, platformës për ekzekutimin e aplikacioneve në rrjet në gjuhën JavaScript, u realizua. Node.js 17.0 i përket degës me kohë të zakonshme mbështetjeje, përditësimet e së cilës do të publikohen deri në qershor 2022. Në ditët në vijim do të përfundojë stabilizimi i degës Node.js 16, e cila do të marrë statusin LTS dhe do të mbështetet deri në prill 2024. Mbulimi i degës së kaluar LTS Node.js 14.0 do të vazhdojë deri në prill 2023, ndërsa dega e mëparshme LTS 12.0 deri në prill 2022.

Përmirësimet kryesore:

  • Motori V8 është përditësuar në versionin 9.5.
  • Продолжена реализация вариантов базового API, основанных на использовании интерфейса асинхронных вычислений Promise. В дополнение к ранее предложенным API Timers Promises и Streams Promises в Node.js 17.0 представлен API Readline Promise для построчного чтения данных с использованием модуля readline. import * as readline from ‘node:readline/promises’; import { stdin as input, stdout as output } from ‘process’; const rl = readline.createInterface({ input, output }); const answer = await rl.question(‘What do you think of Node.js?’); console.log(‘Thank you for your valuable feedback: ${answer}’); rl.close();
  • Biblioteka OpenSSL e cunguar është përditësuar në versionin 3.0 (është përdorur fork quictls/openssl me mbështetje të përfshirë për protokollin QUIC).
  • Është sigurua printimi i versionit të Node.js në gjurmët e stack-ut që printohen në rastet e gabimeve fatale që çojnë në mbylljen e aplikacionit.

Njëherësh, duhet përmendur gjithashtu zgjidhja e dy dobësive në versionet aktuale të Node.js (CVE-2021-22959, CVE-2021-22960), të cilat lejojnë sulme të klasës "HTTP Request Smuggling" (HRS), duke mundësuar përfshirjen e përmbajtjeve të kërkesave të tjera të përdoruesve, përmes dërgimit të kërkesave të klientëve të formuara ndryshe. Kjo ndodh ndërsa përpunohen në të njëjtin rrjedh midis front-end dhe back-end (për shembull, mund të arrihet ndërlidhja e kodit dëmtues JavaScript në seancën e një përdoruesi tjetër). Detajet do të zbulohen më vonë, por deri tani dihet se problemet shkaktohen nga trajtimi i papërshtatshëm i hapësirave midis emrit të titullit HTTP dhe kolonës, si dhe trajtimi i ndryshëm i karaktereve të kthimit të shpinës dhe të linjës në bllokun e parametrave që përdoret për të dërguar trupin e kërkesës në pjesë në mënyrën "chunked".

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ë.

Burimi: opennet.ru

Bleni hostim të besueshëm për faqe me mbrojtje nga DDoS, serverë VPS VDS 🔥 Bleni hostim të besueshëm për faqe me mbrojtje nga DDoS, serverë VPS VDS | ProHoster