Kiadásra került a Node.js 17.0 szerveroldali JavaScript platform.

Megjelent a Node.js 17.0, a JavaScript-alapú hálózati alkalmazások futtatására szolgáló platform. A Node.js 17.0 a normál támogatási ciklusú ághoz tartozik, amelynek frissítéseit 2022 júniusáig adják ki. Néhány napon belül befejeződik a Node.js 16 ág stabilizálása, amely LTS (Hosszú Távú Támogatás) státuszt kap, és 2024 áprilisáig támogatni fogják. A korábbi LTS ág, a Node.js 14.0 támogatása 2023 áprilisáig, míg a Node.js 12.0 ágé 2022 áprilisáig tart.

Fő fejlesztések:

  • A V8 motor frissítve lett a 9.5 verzióra.
  • Продолжена реализация вариантов базового 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();
  • A csomagban lévő OpenSSL könyvtár frissítve lett a 3.0 verzióra (a QUIC protokoll támogatásával rendelkező quictls/openssl forkot használják).
  • A Node.js verziójának megjelenítése a hibakövetési nyomokban, melyek fatális hibák esetén jelennek meg, amelyek az alkalmazás leállásához vezetnek.

Továbbá megemlíthető, hogy a Node.js aktuális ágaiban két sebezhetőséget (CVE-2021-22959, CVE-2021-22960) orvosoltak, amelyek lehetővé teszik az "HTTP Request Smuggling" (HRS) támadásokat, lehetővé téve speciálisan formázott kliens kérések küldésével való belekavarodást más felhasználók kérdéseibe, amelyeket ugyanabban a szálban dolgoznak fel a frontend és a backend között (például rosszindulatú JavaScript-kód beillesztése egy másik felhasználó munkamenetébe). A részletek később kerülnek közzétételre, jelenleg csak annyi ismert, hogy a problémát a HTTP fejléc neve és a kettőspont közötti szóközök helytelen kezelése, valamint a kocsivisszatérítés és a sortörés karakterek eltérő kezelése okozza a kérés testének töredékekben történő továbbításakor használt paraméterek blokkjában.

Ne feledjük, hogy a Node.js platformot nemcsak Web-alkalmazások szerveroldali működtetésére, hanem hagyományos ügyfél- és szerveroldali hálózati programok készítésére is használják. A Node.js alkalmazások funkcionalitásának bővítésére egy nagy modulgyűjtemény áll rendelkezésre, amely tartalmazza a megvalósítású modulokat. szerverek és HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3 klienseket, valamint modulokat különböző webkeretrendszerek integrálásához, WebSocket és Ajax kezelőket, az adatbázisokhoz (MySQL, PostgreSQL, SQLite, MongoDB) való kapcsolódásokat, sablongenerátorokat, CSS-motorokat, kriptográfiai algoritmusok és hitelesítési rendszerek (OAuth) megvalósításait, XML-parsereket.

A számos párhuzamos kérés feldolgozásának biztosítása érdekében a Node.js aszinkron kódvégrehajtási modellt használ, amely események alapján működik, blokkolásmentes üzemmódban, és callback kezelők definiálásával. A kapcsolatok multiplexelésére olyan módszerek állnak rendelkezésre, mint az epoll, kqueue, /dev/poll és select. A kapcsolatok multiplexelésére a libuv könyvtárat használják, amely a libev fölé épül Unix rendszerekben és az IOCP-t a Windows rendszerekben. A szálmedence (thread pool) létrehozásához a libeio könyvtárat használják, míg a blokkolásmentes DNS-kérések végrehajtásához a c-ares integrálva van. Minden blokkolásos rendszerszó hívás a szálmedencén belül hajtódik végre, és a jelek kezelőihez hasonlóan az eredményüket egy névtelen csövön (pipe) keresztül adják vissza. A JavaScript-kód végrehajtását a Google által kifejlesztett V8 motor igénybevételével biztosítják (továbbá a Microsoft kifejleszti a Node.js egy változatát a Chakra-Core motorral).

A Node.js lényegében hasonlít a Perl AnyEvent, Ruby Event Machine, Python Twisted keretrendszerekhez és a Tcl eseménykezelés implementációjához, de a Node.js eseményfeldolgozó ciklus (event loop) rejtve marad a fejlesztő elől, és az események kezelésére emlékeztet egy webalkalmazás működésére a böngészőben. Node.js alkalmazások írása során figyelembe kell venni az eseményalapú programozás sajátosságait, például ahelyett, hogy „var result = db.query(„select..“);” formában várnánk a folyamat befejezésére és a visszatérő eredmények későbbi feldolgozására, a Node.js az aszinkron végrehajtás elvét alkalmazza, azaz a kód átalakul „db.query(„select..“, function (result) {eredményfeldolgozás});” formára, amely esetben a vezérlés azonnal folytatódik a további kóddal, és az adatokat a beérkezésükkor dolgozzuk fel.

Forrás: opennet.ru

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster