Server tərəfdən JavaScript Node.js 17.0 buraxılışı

Node.js 17.0, şəbəkə proqramlarının JavaScript-də işləməsi üçün platforma buraxıldı. Node.js 17.0 2022-ci ilin iyun ayına qədər yeniləmələri almağa davam edəcək müntəzəm dəstək bölməsidir. Yaxın günlərdə LTS statusu alacaq və 16-cü ilin aprel ayına qədər dəstəklənəcək Node.js 2024 filialının stabilləşdirilməsi başa çatacaq. Node.js 14.0-un əvvəlki LTS filialına texniki qulluq 2023-cü ilin aprelinə qədər və sonuncu LTS 12.0 filialından əvvəlki il 2022-ci ilin aprelinə qədər davam edəcək.

Əsas təkmilləşdirmələr:

  • V8 mühərriki 9.5 versiyasına yeniləndi.
  • Promise asinxron hesablama interfeysinin istifadəsi əsasında əsas API-nin variantlarının tətbiqi davam etdirilmişdir. Əvvəllər təklif edilmiş Timers Promises və Streams Promises API-lərinə əlavə olaraq, Node.js 17.0 readline modulundan istifadə edərək verilənlərin sətir-sətir oxunması üçün Readline Promise API təqdim edir. import * 'node:readline/promises'-dən oxunuş xətti kimi; import { stdin giriş kimi, stdout çıxış kimi } 'prosesdən'; const rl = readline.createInterface({ giriş, çıxış }); const answer = await rl.question('Node.js haqqında nə düşünürsünüz?'); console.log('Dəyərli rəyiniz üçün təşəkkür edirik: ${answer}'); rl.close();
  • Təchiz edilən OpenSSL kitabxanası 3.0 versiyasına yeniləndi (QUIC protokol dəstəyi aktivləşdirilmiş quictls/openssl çəngəlindən istifadə olunur).
  • Node.js versiyasını tətbiqin dayandırılmasına səbəb olan ölümcül səhvlər zamanı çıxarılan yığın izlərində nümayiş etdirmək üçün aktivləşdirdi.

Əlavə olaraq, Node.js-in cari filiallarında (CVE-2021-22959, CVE-2021-22960) “HTTP Request Smuggling” (HRS) hücumlarını həyata keçirməyə imkan verən iki zəifliyin aradan qaldırılmasını qeyd edə bilərik. bizə frontend və backend arasında eyni mövzuda emal edilmiş digər istifadəçilərin sorğularının məzmununa daxil olmağa imkan verir (məsələn, zərərli JavaScript kodu başqa istifadəçinin sessiyasına daxil edilə bilər). Təfərrüatlar daha sonra açıqlanacaq, lakin hələ ki, biz bilirik ki, problemlər HTTP başlığı adı ilə iki nöqtə arasındakı boşluqların düzgün idarə edilməməsi, həmçinin ötürülmə zamanı istifadə olunan parametr blokunda daşıma qaytarılması və sətir ötürücü simvolların fərqli işlənməsi ilə əlaqədardır. sorğunun əsas hissəsini "parçalanmış" rejimdə hissələrə ayırın "

Yada salaq ki, Node.js platforması həm Veb proqramların server tərəfindən dəstəklənməsi, həm də adi müştəri və server şəbəkə proqramlarının yaradılması üçün istifadə edilə bilər. Node.js üçün proqramların funksionallığını genişləndirmək üçün böyük modullar toplusu hazırlanmışdır ki, burada HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3 serverləri və müştəriləri, inteqrasiya modulları həyata keçirən modulları tapa bilərsiniz. müxtəlif veb çərçivələri, WebSocket və Ajax işləyiciləri, DBMS-yə birləşdiricilər (MySQL, PostgreSQL, SQLite, MongoDB), şablon mühərrikləri, CSS mühərrikləri, kriptoqrafik alqoritmlərin və avtorizasiya sistemlərinin (OAuth) tətbiqi, XML təhlilçiləri ilə.

Çoxlu sayda paralel sorğuların işlənməsini təmin etmək üçün Node.js bloklanmayan hadisələrin idarə edilməsinə və geri çağırış işləyicilərinin tərifinə əsaslanan asinxron kod icra modelindən istifadə edir. Əlaqələrin multipleksləşdirilməsi üçün dəstəklənən üsullar epoll, kqueue, /dev/poll və select-dir. Bağlantının multipleksləşdirilməsi üçün Unix sistemlərində libev və Windows-da IOCP üçün əlavə olan libuv kitabxanasından istifadə olunur. Libeio kitabxanası mövzu hovuzu yaratmaq üçün istifadə olunur və c-ares bloklanmayan rejimdə DNS sorğularını yerinə yetirmək üçün inteqrasiya olunur. Bloklamaya səbəb olan bütün sistem çağırışları iplik hovuzunun daxilində yerinə yetirilir və sonra, siqnal işləyiciləri kimi, işlərinin nəticəsini adsız boru (boru) vasitəsilə geri köçürür. JavaScript kodunun icrası Google tərəfindən hazırlanmış V8 mühərrikinin istifadəsi ilə təmin edilir (bundan əlavə, Microsoft, Chakra-Core mühərriki ilə Node.js versiyasını hazırlayır).

Özündə Node.js Perl AnyEvent, Ruby Event Machine, Python Twisted çərçivələri və Tcl hadisə tətbiqinə bənzəyir, lakin Node.js-dəki hadisə dövrəsi tərtibatçıdan gizlədilib və işləyən veb proqramında hadisələrin idarə edilməsinə bənzəyir. brauzerdə. node.js üçün proqramlar yazarkən, məsələn, "var nəticə = db.query("select..");" yerinə yetirmək əvəzinə, hadisəyə əsaslanan proqramlaşdırmanın xüsusiyyətlərini nəzərə almalısınız. işin tamamlanmasını və nəticələrin sonradan işlənməsini gözləməklə, Node.js asinxron icra prinsipindən istifadə edir, yəni. kod "db.query("seç..", funksiya (nəticə) {nəticənin işlənməsi});"-a çevrilir, burada idarəetmə dərhal sonrakı koda keçəcək və sorğunun nəticəsi məlumat gələn kimi işlənəcək.

Mənbə: opennet.ru

Добавить комментарий