Il runtime environment server side JavaScript Node.js è giunto di recente alla sua 18ª release, un aggiornamento che lo scorso ottobre venne promosso al rango di LTS (Long Term Support) e continuerà ad essere implementata fino ad Aprile 2025.
La fetch API ufficiale di Node.js
Tra le novità più interessanti di Node.js 18 troviamo sicuramente l'introduzione di una fetch API ufficiale, su tratta però di una feature ancora in fase sperimentale ed è possibile che nel corso dei test possano registrarsi dei comportamenti inattesi.
Questa interfaccia di programmazione rappresenta un'implementazione nativa della fetch API già utilizzata da tempo nei browser per la navigazione Web con lo scopo di recuperare risorse in modalità asincrona attraverso un network.
A questo proposito è comunque bene ricordare che l'ambiente di Node.js è totalmente diverso rispetto a quello di un browser ed è legittimo attendersi risultati differenti.
È inoltre utile ricordare che la fetch API di Node.js si basa sul modulo node-fetch
appositamente pensato per portare l'omonima interfaccia nel runtime system basato sul motore JavaScript V8 di Chrome.
Il modulo test runner
Ad essere ancora in fase sperimentale è anche il modulo test runner concepito per restituire risultati nel formato TAP (Test Anything Protocol) che è considerato uno standard per le comunicazioni tra unit test e test harness.
Uno dei vantaggi di questo modulo risiede nel fatto che esso supporta sia la modalità sincrona che quella asincrona e gli output generati possono essere interpretati tramite qualsiasi test harness compatibile con TAP.
Moduli prefix-only
Il team di sviluppo di Node.js ha voluto sottolineare che tra le funzionalità principali di Node.js 18 vi sono anche i moduli prefix-only. Questi ultimi nascono per facilitare l'integrazione di nuovi moduli nel core senza dover fronteggiare problematiche relative ai conflitti basati sui nomi.
Non a caso test runner si presenta come il primo modulo prefix-only e per caricarlo è necessario fare riferimento al suo prefisso (node:test
). Nel caso in cui si tentasse di importare o richiedere un modulo "test
" Node.js effettuerà la ricerca di un modulo omonimo che non fa parte del core.