Nell'aprile 2022 è stata rilasciata la versione NodeJS Node v18. L'aggiornamento di Node v18 è stato uno degli aggiornamenti più attesi da Node v14, che ha aggiunto l'API di archiviazione locale asincrona, un'interfaccia WASI (Web Assembly System) e il supporto per i moduli ECMAScript.

L'aggiornamento v18 aggiunge vari miglioramenti a NodeJS, tra cui un'API di recupero abilitata a livello globale per impostazione predefinita, supporto per l'API di streaming Web e un modulo core test runner. Qui trattiamo la maggior parte delle modifiche significative a NodeJS nella v18.

1. L'API di recupero

L'API di recupero fornisce un'interfaccia per l'accesso e la manipolazione di richieste e risposte HTTP. Prima di NodeJS v18, le richieste HTTP effettuate con NodeJS richiedevano librerie di terze parti come assio e recupero del nodo o il complicato http o https pacchetto.

NodeJS v18 rende l'API di recupero disponibile nell'ambito globale per impostazione predefinita. L'API di recupero globale elimina la necessità di librerie di terze parti come

instagram viewer
assio e il codice dettagliato associato a https pacchetto durante il recupero delle risorse in modo asincrono su una rete.

Ecco un esempio dell'utilizzo dell'API:

cost getDati = asincronofunzione () {
Tentativo {
cost ris = aspettare recupera("https://example.com/users");
cost dati = aspettare res.json();
consolle.log (dati);
} presa (errore) {
consolle.tronco d'albero(`Qualcosa è andato storto, ${errore}`);
}
};
getData();

Il getData la funzione sopra invia a OTTENERE richiesta di recuperare le risorse da " https://example.com/users". L'API di recupero accetta anche un secondo parametro facoltativo, un oggetto options. Gli oggetti opzioni dovrebbero contenere dettagli sulla richiesta. Per esempio:

cost dati utente = {
nome: "Jon Snow",
età: 25,
Genere: "M",
};
cost postDati = asincronofunzione (dati) {
Tentativo {
cost ris = aspettare recupera("https://esempio.com/utenti", {
metodo: "INVIARE",
corpo: JSON.stringify (dati),
});
cost dati di risposta = aspettare res.json();
consolle.tronco d'albero(
`La richiesta ha avuto successo, ecco i dettagli: ${dati di risposta}`
);
} presa (errore) {
consolle.tronco d'albero(`La richiesta non ha avuto successo, ecco i dettagli: ${errore}`);
}
};
postData (userData);

Sebbene l'API di recupero sia ancora sperimentale, dovrebbe funzionare bene per la maggior parte degli utenti.

2. Supporto per l'API Web Streams

Pensa alle applicazioni multimediali o in tempo reale; questo è un caso d'uso fondamentale dell'API web-streams. L'API dei flussi Web è un insieme di interfacce che consentono la scomposizione programmatica di una grande risorsa ricevuta su una rete in piccoli blocchi, quindi la elabora bit per bit.

Un esempio di flusso è il corpo della risposta restituito da un esito positivo andare a prendere richiesta. Il corpo della risposta è del tipo ReadableStream.

NodeJS v18 espone un sperimentale implementazione dell'API dei flussi web. Con questo aggiornamento, le API del flusso web sono ora disponibili sia nel client che nel server, rendendo lo sviluppo più semplice.

Puoi trovare un elenco degli stream attualmente supportati in note di rilascio ufficiali.

3. Il modulo del tester

Nelle versioni precedenti di NodeJS, il test senza librerie di terze parti veniva eseguito con il built-in asserire biblioteca.

Il asserire La libreria semplificava la scrittura di test semplici, ma presentava limitazioni significative che rendevano difficile lavorare con più suite di test. Queste limitazioni hanno favorito la necessità di librerie di terze parti come Jest per eseguire test più avanzati.

NodeJS v18 elimina la necessità di librerie di terze parti con l'introduzione del modulo core test runner di NodeJS. Il test runner supporta funzionalità come subtest, test skipping, callback test, ecc., proprio come Jest.

Per utilizzare il test runner, è necessario importare asserire da asserire e test da nodo: prova. Notare il "nodo:" prefisso; è il nuovo protocollo di Node che distingue i pacchetti core del nodo dai pacchetti creati dall'utente.

costasserire = richiedi("asserire");
cost prova = richiedere("nodo: test");

Ecco un esempio di un semplice test che utilizza il modulo test runner:

test("Controlla se le stringhe sono le stesse", (t) => {
assert.strictEqual("test", "test");
});

Verranno visualizzati i risultati del test visualizzati dal corridore del test TAP (Protocollo Test Anything) formato. Tieni presente che questa funzione è ancora sperimentale e potrebbe cambiare in qualsiasi momento.

4. Altri aggiornamenti e correzioni

L'aggiornamento di Node v18 include anche un aggiornamento del motore v8 alla versione 10.1. Il motore v8 è il runtime JavaScript utilizzato da NodeJS per eseguire JavaScript.

L'aggiornamento v8 rende il metodi di matricetrova ultimo e trovaLastIndex disponibile in NodeJS e migliora le prestazioni dei campi di classe e dei metodi delle classi private.

NodeJS espone anche le seguenti API nell'ambito globale nell'aggiornamento di Node v18:

  • Blob
  • Canale di Brodcast

Aggiornamento al nodo v18

Usando Node v18, puoi testare un'intera applicazione senza librerie esterne, recuperare risorse in modo asincrono senza librerie esterne e avere flussi web abilitati nel tuo server.

Tuttavia, vale la pena notare che queste funzionalità sono ancora sperimentali e possono cambiare in qualsiasi momento. Puoi eseguire l'aggiornamento a NodeJS v18 utilizzando il file link ufficiale per il download.