La piattaforma server JavaScript disponibile è Node.js 19.0

È stato rilasciato Node.js 19.0, una piattaforma per l'esecuzione di applicazioni web in JavaScript. Node.js 19 appartiene al ramo con supporto regolare, con aggiornamenti previsti fino a giugno 2023. Nei prossimi giorni sarà completata la stabilizzazione del ramo Node.js 18, che riceverà lo stato LTS e sarà supportato fino ad aprile 2025. Il supporto per il ramo LTS precedente, Node.js 16.0, continuerà fino a settembre 2023, mentre il ramo LTS di due versioni fa, 14.0, durerà fino ad aprile 2023.

Miglioramenti principali:

  • Il motore V8 è stato aggiornato alla versione 10.7, utilizzata in Chromium 107. Rispetto al ramo Node.js 18, le novità del motore includono l'implementazione della terza versione dell'API Intl.NumberFormat, con nuove funzioni formatRange(), formatRangeToParts() e selectRange(), supporto per raggruppamento dei set, nuove opzioni di arrotondamento e definizione della precisione, così come la possibilità di interpretare le stringhe come numeri decimali. Sono stati aggiornati anche i pacchetti dependency llhttp 8.1.0 e npm 8.19.2.
  • È stata proposta una nuova opzione "node --watch" che implementa una modalità di monitoraggio, consentendo il riavvio del processo quando viene modificato un file importato (ad esempio, eseguendo "node --watch index.js", il processo verrà automaticamente riavviato quando index.js viene modificato).
  • Per tutte le connessioni HTTP/HTTPS in uscita è abilitato il supporto per il meccanismo HTTP 1.1 Keep-Alive, che mantiene la connessione aperta per un certo periodo di tempo per gestire più richieste HTTP all'interno di una singola connessione. Si prevede che l'uso di Keep-Alive aumenti la larghezza di banda e le prestazioni. Per impostazione predefinita, il timeout per mantenere la connessione aperta è impostato a 5 secondi. Nella realizzazione del client HTTP è stato aggiunto il supporto per l'analisi dell'intestazione HTTP Keep-Alive nelle risposte. server, e nella realizzazione del server HTTP di Node.js è stata aggiunta la disconnessione automatica dei client inattivi che utilizzano Keep-Alive.
  • È diventato stabile l'API WebCrypto, ad eccezione delle funzioni che utilizzano gli algoritmi Ed25519, Ed448, X25519 e X448. Per accedere al modulo WebCrypto, ora è possibile utilizzare globalThis.crypto oppure require('node:crypto').webcrypto.
  • È stata rimossa la supporto per gli strumenti di tracciamento DTrace, SystemTap e ETW (Event Tracing for Windows), il cui mantenimento è stato considerato non conveniente a causa della complessità di aggiornamento in uno stato attuale senza un adeguato piano di supporto.

La piattaforma Node.js può essere utilizzata sia per il supporto server delle applicazioni web, sia per creare normali programmi di rete client e server. Per espandere le funzionalità delle applicazioni Node.js, è disponibile un'ampia collezione di moduli, in cui è possibile trovare moduli con implementazioni server e client HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3, moduli per l'integrazione con vari framework web, gestori WebSocket e Ajax, connettori per database (MySQL, PostgreSQL, SQLite, MongoDB), motori di templating, motori CSS, implementazioni di algoritmi crittografici e sistemi di autorizzazione (OAuth), parser XML.

Per gestire un elevato numero di richieste parallele, Node.js utilizza un modello asincrono di esecuzione del codice, basato su un'architettura ad eventi in modalità non bloccante e sulla definizione di callback. Per il multiplexing delle connessioni, vengono supportati metodi come epoll, kqueue, /dev/poll e select. La libreria libuv, che funge da interfaccia sopra libev nei sistemi Unix e IOCP in Windows, viene utilizzata per il multiplexing delle connessioni. La libreria libeio è impiegata per creare un pool di thread, mentre c-ares è integrato per eseguire richieste DNS in modalità non bloccante. Tutti i syscalls bloccanti sono eseguiti all'interno del pool di thread e, come gli handler dei segnali, restituiscono i risultati delle loro operazioni tramite una pipe non nominata. L'esecuzione del codice JavaScript è garantita dall'utilizzo del motore V8 sviluppato da Google (in aggiunta, Microsoft sviluppa una versione di Node.js con il motore Chakra-Core).

In sostanza, Node.js è simile ai framework Perl AnyEvent, Ruby Event Machine, Python Twisted e all'implementazione degli eventi in Tcl, ma il ciclo di gestione degli eventi in Node.js è nascosto allo sviluppatore e ricorda la gestione degli eventi in un'applicazione web che opera nel browser. Quando si scrivono applicazioni per Node.js, è importante considerare le peculiarità della programmazione orientata agli eventi; per esempio, invece di eseguire "var result = db.query('select..');" aspettando il completamento e poi elaborando i risultati, in Node.js si utilizza il principio dell'esecuzione asincrona, ovvero il codice viene trasformato in "db.query('select..', function (result) {elaborazione del risultato});", permettendo così il passaggio immediato al codice successivo, mentre i risultati della query vengono elaborati man mano che i dati arrivano.

Fonte: opennet.ru

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster