Piattaforma JavaScript lato server Node.js 18.0 disponibile

È stata rilasciata Node.js 18.0, una piattaforma per l'esecuzione di applicazioni di rete in JavaScript. Node.js 18.0 è classificato come ramo di supporto a lungo termine, ma questo status verrà assegnato solo ad ottobre, dopo la stabilizzazione. Node.js 18.x sarà supportato fino ad aprile 2025. La manutenzione del precedente ramo LTS di Node.js 16.x durerà fino ad aprile 2024 e l'anno precedente all'ultimo ramo LTS 14.x fino ad aprile 2023. Il ramo 12.x LTS verrà interrotto il 30 aprile, mentre il ramo di staging Node.js 17.x verrà interrotto il 1° giugno.

Principali miglioramenti:

  • Il motore V8 è stato aggiornato alla versione 10.1, utilizzata in Chromium 101. Rispetto alla release 17.9.0 di Node.js, ora c'è il supporto per funzionalità come i metodi findLast e findLastIndex per la ricerca di elementi relativi alla fine di un array e la funzione Intl.supportedValuesOf. API internazionale migliorata. L'inizializzazione dei campi delle classi e dei metodi privati ​​è stata accelerata.
  • L'API sperimentale fetch() è abilitata per impostazione predefinita, progettata per caricare risorse sulla rete. L'implementazione si basa sul codice del client HTTP/1.1 undici ed è il più vicino possibile all'API simile fornita nei browser. Ciò include il supporto per le interfacce FormData, Headers, Request e Response per manipolare le intestazioni di richiesta e risposta HTTP. const res = attendono fetch('https://nodejs.org/api/documentation.json'); if (res.ok) { const data = attendono res.json(); console.log(dati); }
  • È stata aggiunta un'implementazione sperimentale dell'API Web Streams, che fornisce l'accesso ai flussi di dati ricevuti sulla rete. L'API consente di aggiungere i propri gestori per lavorare con i dati man mano che le informazioni arrivano sulla rete, senza attendere il download dell'intero file. Gli oggetti ora disponibili in Node.js includono ReadableStream*, TransformStream*, WritableStream*, TextEncoderStream, TextDecoderStream, CompressionStream e DecompressionStream.
  • L'API BLOB è stata spostata in stabile, consentendo di incapsulare dati grezzi immutabili per un utilizzo sicuro in thread di lavoro diversi.
  • L'API BroadcastChannel è stata resa stabile, consentendo di organizzare lo scambio di messaggi in modalità asincrona nel formato “un mittente - molti destinatari”.
  • Aggiunto modulo sperimentale node:test per creare ed eseguire test in JavaScript che restituiscono risultati in formato TAP (Test Anything Protocol).
  • Viene fornita la generazione di assembly già pronti per Red Hat Enterprise Linux (RHEL) 8 e altre distribuzioni basate su Glibc 2.28+, inclusi Debian 10 e Ubuntu 20.04, nonché per macOS 10.15+. A causa di problemi con la build del motore V8, la creazione di build a 32 bit per Windows è stata temporaneamente interrotta.
  • Fornita un'opzione sperimentale per creare un eseguibile Node.js con componenti selezionati dall'utente inizializzati all'avvio. Per definire i componenti iniziali, l'opzione “--node-snapshot-main” è stata aggiunta allo script di build configure, ad esempio “./configure —node-snapshot-main=marked.js; nome nodo"

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