A piattaforma JavaScript di u latu di u servitore Node.js 20.0 dispunibule

Node.js 20.0 hè stata liberata, una piattaforma per eseguisce applicazioni di rete in JavaScript. Node.js 20.0 hè classificatu cum'è un ramu di supportu à longu andà, ma questu statutu serà assignatu solu in uttrovi, dopu a stabilizazione. Node.js 20.x serà supportatu finu à u 30 d'aprile di u 2026. U mantenimentu di u ramu LTS precedente di Node.js 18.x durà finu à aprile 2025, è l'annu prima di l'ultimu ramu LTS 16.x finu à settembre 2023. U ramu 14.x LTS serà discontinuatu u 30 d'aprile, è u ramu di staging Node.js 19.x serà discontinuatu u 1 di ghjugnu.

Principali miglioramenti:

  • U mutore V8 hè stata aghjurnata à a versione 11.3, utilizata in Chromium 113. Cambiamenti cumparatu cù u ramu Node.js 19, chì hà utilizatu u mutore Chromium 107, includenu e funzioni String.prototype.isWellFormed è toWellFormed, Array.prototype è TypedArray. metudi di prototipu per travaglià cù una copia quandu cambia l'uggetti Array è TypedArray, a bandiera "v" in RegExp, supportu per ridimensionà ArrayBuffer è aumentà a dimensione di SharedArrayBuffer, recursion di tail (tail-call) in WebAssembly.
  • Hè statu prupostu un mecanismu sperimentale di Modellu di Permissione chì permette di limità l'accessu à certe risorse durante l'esekzione. U supportu di u Modellu di Permissione hè attivatu da specificà a bandiera "--experimental-permission" quandu eseguisce. L'implementazione iniziale offre opzioni per limità l'accessu di scrittura (--allow-fs-write) è di lettura (--allow-fs-read) à certe parti di u sistema di fugliale, prucessi di i zitelli (--allow-child-process), è add-ons (--no-addons) ) è fili (--allow-worker). Per esempiu, per permette di scrive in u cartulare /tmp è leghje u schedariu /home/index.js, pudete specificà: node —experimental-permission —allow-fs-write=/tmp/ —allow-fs-read=/home /index.js index .js

    Per verificà l'accessu, hè cunsigliatu di utilizà u metudu process.permission.has(), per esempiu, "process.permission.has('fs.write',"/tmp/test").

  • I gestori di u Modulu Esternu ECMAScript (ESM) caricati via l'opzione "--experimental-loader" ora funzionanu in un filu separatu, isolatu da u filu principale, eliminendu l'intersezzione di u codice di l'applicazione è i moduli ESM caricati. Simile à i navigatori, u metudu import.meta.resolve () hè avà eseguitu in modu sincronu quandu chjamatu da una applicazione. In unu di i prossimi rami di Node.js, u supportu per a carica di ESM hè pianificatu per esse trasferitu à a categuria di funziunalità stabile.
  • U modulu node: test (test_runner), cuncepitu per creà è eseguisce testi in JavaScript chì tornanu risultati in u formatu TAP (Test Anything Protocol), hè statu stabilitu.
  • Un squadra di sviluppu separata hè stata furmata rispunsevuli di l'ottimisazione di u rendiment, chì, quandu preparava una nova filiera, hà travagliatu per accelerà diversi cumpunenti di runtime, cumprese l'analisi URL, fetch () è EventTarget. Per esempiu, l'overhead di l'inizializazione di EventTarget hè stata dimezzata, u funziunamentu di u metu URL.canParse() hè statu migliuratu significativamente, è l'efficienza di i timers hè stata migliurata. Include ancu a liberazione di un parser URL d'altu rendiment, Ada 2.0, scrittu in C++.
  • U sviluppu di a capacità sperimentale per furnisce l'applicazioni in forma di un unicu schedariu eseguibile (SEA, Single Executable Applications) hà cuntinuatu. A creazione di un schedariu eseguibile avà bisognu di rimpiazzà un blob generatu da un schedariu di cunfigurazione in formatu JSON (invece di rimpiazzà un schedariu JavaScript).
  • Cumpatibilità mejorata di l'API Web Crypto cù implementazioni da altri prughjetti.
  • Aggiuntu supportu ufficiale per Windows nantu à i sistemi ARM64.
  • L'implementazione di supportu per l'estensione WASI (WebAssembly System Interface) per a creazione di applicazioni WebAssembly stand-alone hà cuntinuatu. Eliminatu a necessità di specificà una bandiera di linea di cumanda speciale per attivà u supportu WASI.

A piattaforma Node.js pò esse usata sia per u mantenimentu di u servitore di l'applicazioni Web sia per a creazione di prugrammi di rete di client è servitore regulare. 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), mutori 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