Deno rimpiazzerà Node.js?

🦖 Il DENO-sauro è nella stanza

Autore

Luca Fedrizzi

19 ago 2020

Quando si parla di Javascript lato server il re incontrastato è Node.js. Di recente, però, mi sono imbattuto in Deno, un runtime per JavaScript che sembra davvero promettente. In questo articolo vi racconterò perché credo potrebbe diventare il successore del buon vecchio Node.js.

Dando la possibilità a chi fa frontend di utilizzare lo stesso linguaggio anche per il backend, Node.js ha talmente abbassato il suo costo di adozione che si è diffuso a velocità folle.

Ogni giorno escono nuovi pacchetti (come ad esempio il nostro react-yearly-calendar) che vanno a sommarsi alla gran quantità di quelli esistenti, tanto che npm sembra stia per esplodere.

Per quanto Node.js abbia tante qualità ed offra tanti vantaggi, fra i quali la vastissima community, non è privo di difetti. Mancano ancora diverse caratteristiche che invece troviamo in Webpack, come gli ECMAScript modules che sono ancora in fase sperimentale.

A rispondere all’esigenza di un ammodernamento è stato proprio il creatore di Node.js, Ryan Dahl. Nel 2018 ha annunciato Deno con una talk intitolata “10 Things I Regret About Node.js” e questo la dice lunga su quanto lavoro si dovesse fare per migliorare Node.

Vediamo alcuni di questi miglioramenti che rendono Deno degno di nota.

Typescript

La comunità JS sta pian piano passando ad un utilizzo massiccio di Typescript, il superset che aggiunge i tipi a JS. La caratteristica più importante che Deno ha nel suo arsenale è che Typescript funziona senza dover installare nessun pacchetto aggiuntivo. Eseguendo:

deno run hello-world.ts

Tutto magicamente funzionerà da solo. Nessun bisogno di installare typescript o un bundler dedicato. Niente. Bellissimo.

Un solo file

Chi ha installato almeno una volta Node.js sa che la sua installazione non è così pulita come si potrebbe pensare. Crea molti file di configurazione e cartelle in posti nascosti. Deno, invece, si presenta come compilato in un singolo file. Sarà quindi molto più comodo gestirne le versioni e la manutenzione a differenza di Node.js, dove anche solo rimuoverlo interamente dalla propria macchina può essere complesso.

Niente più npm (o simili)

Con Deno è possibile fare questo:

deno run https://deno.land/std/examples/welcome.ts

Con questo comando stiamo eseguendo un file Typescript direttamente da CDN come pika.dev o jspm.io.

Da notare anche l’url https://deno.land/std. Gli “standard modules” di Deno sono distribuiti utilizzando degli URL e curati direttamente da loro. Insomma, niente più yarn install.

Purtroppo molte delle librerie su npm che siamo abituati ad usare non sono compatibili con Deno, ma lo saranno, dato che stanno lavorando ad un layer di compatibilità con i pacchetti su npm.

Sicuro

Se non specificato nel comando di avvio gli script eseguiti con Deno non avranno accesso a parti sensibili del sistema, come ad esempio i file o la rete. Per avere accesso alla rete bisognerà usare il parametro --allow-net.

E molto altro…

Queste sono solo alcune fra le novità che porta con sé Deno, abbiamo solo toccato la superficie. Consiglio vivamente di fare un giro su https://deno.land/manual per molte altre informazioni.

Il futuro di Deno

La tecnologia è talmente nuova che ogni opinione forte sul suo futuro è una speculazione. Anche se la versione 1 è uscita solo pochi giorni fa posso già fare delle prime considerazioni basate su quello che ho provato.

Per quanto alcune feature di Deno lo rendano molto più moderno di Node.js, quest’ultimo ha ormai raggiunto un livello di maturità troppo alto per essere rimpiazzato a breve in produzione, e comunque non vi consiglio di farlo.

Inoltre Deno è costruito in Rust, un linguaggio relativamente recente e con una userbase non così vasta come quella C++ (usato per creare Node.js).

D’altro canto utilizzano entrambi il V8 di Chrome, quindi, per quanto riguarda quello che succede sotto al cofano, possiamo stare tranquilli. Le performance sono direttamente confrontabili visto che la parte che varierà sarà esclusivamente quella dove i due team metteranno le mani.

Io e Deno nei prossimi mesi

Personalmente la considero la tecnologia web più rilevante da seguire in questa seconda metà del 2020. Con le sue 66k stelle su GitHub è molto promettente e potrebbe dare una scossa al mondo JavaScript.

Senza dubbio lo userò come ambiente di sviluppo per i miei prossimi progetti Typescript, perché la velocità con la quale si può cominciare qualcosa di nuovo è pressoché imbattibile e a Typescript, ormai, non so rinunciare.

Autore

Luca Fedrizzi