Versione JavaScript Node.js 17.0 da u latu di u servitore

A liberazione di Node.js 17.0, una piattaforma per eseguisce applicazioni di rete in JavaScript, hè stata fatta. Node.js 17.0 hè una filiera di supportu regulare cù aghjurnamenti finu à ghjugnu 2022. In i ghjorni à vene, a stabilizazione di u ramu Node.js 16 serà cumpletu, chì riceverà u statutu LTS è serà supportatu finu à aprile 2024. U mantenimentu di a filiera precedente Node.js 14.0 LTS durà finu à aprile 2023, è a filiera precedente 12.0 LTS finu à aprile 2022.

Principali miglioramenti:

  • U mutore V8 hè statu aghjurnatu à a versione 9.5.
  • L'implementazione di varianti di l'API basata nantu à l'usu di l'interfaccia di computing asincrona Promise hà cuntinuatu. In più di l'API di Timers Promises è Streams Promises pruposte in precedenza, Node.js 17.0 introduce l'API Readline Promise per leghje dati linea per linea utilizendu u modulu readline. impurtà * cum'è readline da 'node:readline/promises'; import { stdin as input, stdout as output } da 'prucessu'; const rl = readline.createInterface ({ input, output }); const answer = await rl.question('Chì ne pensate di Node.js?'); console.log('Grazie per u vostru preziosu feedback: ${risposta}'); rl.close();
  • A libreria OpenSSL furnita hè stata aghjurnata à a versione 3.0 (aduprendu a forchetta quictls/openssl cù u supportu di protokollu QUIC attivatu).
  • Assicuratevi chì a versione Node.js hè visualizata in stack traces per errori fatali chì causanu a fine di l'applicazione.

Inoltre, pudemu mintuvà l'eliminazione di duie vulnerabilità in i rami attuali di Node.js (CVE-2021-22959, CVE-2021-22960), chì permettenu di realizà attacchi di a classe HTTP Request Smuggling (HRS), chì permette, per via di l'inviu di richieste di clienti apposta, di cuncellà in u cuntenutu di e dumande da altri utilizatori processati in u stessu filu trà u frontend è u backend (per esempiu, pudete ottene a sostituzione di codice JavaScript maliziusu in a sessione di un altru utilizatore). I dettagli seranu revelati più tardi, ma per avà hè cunnisciutu solu chì i prublemi sò causati da una manipulazione incorrecta di spazii trà u nome di l'intestazione HTTP è u colon, è ancu una diversa gestione di i caratteri di ritornu di carri è di l'alimentazione di linea in u bloccu di paràmetru utilizatu quandu si passa. u corpu di dumanda in pezzi in modu "chunked".

Ricurdativi chì a piattaforma Node.js pò esse aduprata sia per u mantenimentu di u servitore di l'applicazioni Web sia per a creazione di u cliente ordinariu è i prugrammi di rete di u servitore. Per espansione a funziunalità di l'applicazioni per Node.js, hè stata preparata una grande cullizzioni di moduli, in quale pudete truvà moduli cù l'implementazione di HTTP, SMTP, XMPP, DNS, FTP, IMAP, servitori POP3 è clienti, moduli per integrazione. cù diversi frameworks web, gestori WebSocket è Ajax, connettori DBMS (MySQL, PostgreSQL, SQLite, MongoDB), mudelli di mudelli, motori CSS, implementazioni di algoritmi criptografici è sistemi d'autorizazione (OAuth), parsers XML.

Per assicurà a trasfurmazioni di un gran numaru di richieste parallele, Node.js usa un mudellu di esecuzione di codice asincronu basatu nantu à a gestione di l'eventi senza bloccu è a definizione di i gestori di callback. I metudi supportati per e cunnessione multiplexing sò epoll, kqueue, /dev/poll, è selezziunate. Per a multiplexing di cunnessione, a biblioteca libuv hè aduprata, chì hè un add-on per libev in sistemi Unix è IOCP in Windows. A libreria libeio hè aduprata per creà un pool di fili, è c-ares hè integratu per eseguisce dumande DNS in modu senza bloccu. Tutti i chjami di u sistema chì causanu u bloccu sò eseguiti in u pool di filu è dopu, cum'è i gestori di signali, trasfirìanu u risultatu di u so travagliu à traversu una pipa senza nome (pipa). L'esekzione di codice JavaScript hè furnita per mezu di l'usu di u mutore V8 sviluppatu da Google (in più, Microsoft sviluppa una versione di Node.js cù u mutore Chakra-Core).

In u so core, Node.js hè simile à Perl AnyEvent, Ruby Event Machine, Python Twisted frameworks, è l'implementazione di l'avvenimentu Tcl, ma u ciclu di l'avvenimentu in Node.js hè oculatu da u sviluppatore è s'assumiglia à a gestione di l'avvenimenti in una applicazione web in esecuzione. in u navigatore. Quandu scrivite l'applicazioni per node.js, avete bisognu di cunsiderà e specificità di prugrammazione guidata da l'avvenimentu, per esempiu, invece di fà "var result = db.query ("select..");" cù l'aspittà di a fine di u travagliu è u processu sussegwente di i risultati, Node.js usa u principiu di l'esekzione asincrona, i.e. u codice hè trasfurmatu in "db.query ("select ..", funzione (result) {result processing});", in quale u cuntrollu passerà istantaneamente à più codice, è u risultatu di a quistione serà processatu cum'è data ghjunghje.

Source: opennet.ru

Add a comment