Piattaforma JavaScript lato server Node.js 19.0 disponibile

È stata rilasciata Node.js 19.0, una piattaforma per l'esecuzione di applicazioni di rete in JavaScript. Node.js 19 è un ramo di supporto regolare con aggiornamenti disponibili fino a giugno 2023. Nei prossimi giorni verrà completata la stabilizzazione del branch Node.js 18, che riceverà lo status LTS e sarà supportato fino ad aprile 2025. La manutenzione del precedente ramo LTS di Node.js 16.0 durerà fino a settembre 2023 e l'anno precedente all'ultimo ramo LTS 14.0 fino ad aprile 2023.

Principali miglioramenti:

  • Il motore V8 è stato aggiornato alla versione 10.7, utilizzata in Chromium 107. Tra le modifiche apportate al motore rispetto al ramo Node.js 18 si segnala l'implementazione della terza versione dell'API Intl.NumberFormat, che aggiunge nuove funzioni formatRange (), formatRangeToParts() e selectRange(), raggruppamento di insiemi, nuove opzioni per l'arrotondamento e l'impostazione della precisione, la capacità di interpretare le stringhe come numeri decimali. Sono state aggiornate anche le dipendenze incluse llhttp 8.1.0 e npm 8.19.2.
  • È stato proposto un comando sperimentale "node -watch" con l'implementazione di una modalità watch che garantisce che il processo venga riavviato quando cambia il file importato (ad esempio, se viene eseguito "node -watch index.js", il processo verrà riavviato automaticamente quando cambia index.js).
  • Per tutte le connessioni HTTP/HTTPS in uscita è abilitato il supporto al meccanismo Keep-Alive HTTP 1.1, che lascia la connessione aperta per un certo tempo per elaborare più richieste HTTP all'interno della stessa connessione. Si prevede che Keep-Alive migliorerà la produttività e le prestazioni. Per impostazione predefinita, il timeout della connessione aperta è impostato su 5 secondi. Il supporto per l'analisi dell'intestazione HTTP Keep-Alive nelle risposte del server è stato aggiunto all'implementazione del client HTTP e la disconnessione automatica dei client inattivi utilizzando Keep-Alive è stata aggiunta all'implementazione del server HTTP Node.js.
  • L'API WebCrypto è stata trasferita nella categoria stabile, ad eccezione delle funzioni che utilizzano gli algoritmi Ed25519, Ed448, X25519 e X448. Per accedere al modulo WebCrypto ora puoi utilizzare globalThis.crypto o require('node:crypto').webcrypto.
  • È stato rimosso il supporto agli strumenti di tracciamento DTrace, SystemTap ed ETW (Event Tracing for Windows), il cui mantenimento era ritenuto inappropriato a causa della complessità di mantenerlo aggiornato in assenza di un adeguato piano di supporto.

La piattaforma Node.js può essere utilizzata sia per la manutenzione del server di applicazioni Web sia per la creazione di normali programmi di rete client e server. Per espandere la funzionalità delle applicazioni per Node.js, è stata preparata un'ampia raccolta di moduli, in cui è possibile trovare moduli con l'implementazione di server e client HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3, moduli per l'integrazione con vari framework web, gestori WebSocket e Ajax, connettori DBMS (MySQL, PostgreSQL, SQLite, MongoDB), motori di template, motori CSS, implementazioni di algoritmi crittografici e sistemi di autorizzazione (OAuth), parser XML.

Per garantire l'elaborazione di un gran numero di richieste parallele, Node.js utilizza un modello di esecuzione del codice asincrono basato sulla gestione degli eventi non bloccanti e sulla definizione di gestori di callback. I metodi supportati per le connessioni multiplex sono epoll, kqueue, /dev/poll e select. Per il multiplexing della connessione viene utilizzata la libreria libuv, che è un componente aggiuntivo per libev su sistemi Unix e IOCP su Windows. La libreria libeio viene utilizzata per creare un pool di thread e c-ares è integrato per eseguire query DNS in modalità non bloccante. Tutte le chiamate di sistema che causano il blocco vengono eseguite all'interno del pool di thread e quindi, come i gestori di segnali, trasferiscono il risultato del loro lavoro attraverso una pipe (pipe) senza nome. L'esecuzione del codice JavaScript avviene tramite l'utilizzo del motore V8 sviluppato da Google (inoltre Microsoft sta sviluppando una versione di Node.js con il motore Chakra-Core).

Fondamentalmente, Node.js è simile a Perl AnyEvent, Ruby Event Machine, Python Twisted framework e all'implementazione di eventi Tcl, ma il loop degli eventi in Node.js è nascosto allo sviluppatore e assomiglia alla gestione degli eventi in un'applicazione web in esecuzione nel browser. Quando si scrivono applicazioni per node.js, è necessario considerare le specifiche della programmazione basata sugli eventi, ad esempio, invece di fare "var result = db.query("select..");" con l'attesa del completamento del lavoro e la successiva elaborazione dei risultati, Node.js utilizza il principio dell'esecuzione asincrona, ovvero il codice viene trasformato in "db.query("seleziona..", funzione (risultato) {elaborazione risultato});", in cui il controllo passerà immediatamente a ulteriore codice e il risultato della query verrà elaborato all'arrivo dei dati.

Fonte: opennet.ru

Aggiungi un commento