La programmazione JavaScript ha subito un forte cambiamento con l’introduzione di Node.js, che è subito diventato un requisito fondamentale nello sviluppo di un’app in linguaggio JavaScript lato server. Node.js, infatti, ormai è un vero e proprio caposaldo della programmazione web ed uno strumento imprescindibile per tutti gli sviluppatori backend, aspiranti e non.
Ad oggi, tuttavia, il creator di Node.js ha presentato sul mercato Deno, il diretto rivale. Andremo a scoprire in questo articolo le differenze che ci sono tra queste due piattaforme.
Cos’è Node js?
Node.js è un runtime JavaScript lato backend basato sul motore V8 di Chrome; introdotto nel 2009, da allora è diventato uno dei runtime JavaScript lato server più popolari. Gli sviluppatori hanno adottato Node.js grazie alla sua scalabilità, prestazioni e al vasto ecosistema di librerie e framework. La maggior parte delle aziende preferisce Node.js perché JavaScript può anche essere un linguaggio di scripting per la creazione di applicazioni lato client.
In ambito lavorativo la conoscenza di Node.js è estremamente richiesta. Nell’aprile del 2023 è stata rilasciata l’ultima versione di Node.js, la versione 20. L’aggiornamento più significativo per Node.js 20 è stato l’introduzione di un modello di autorizzazione che in realtà segue Deno, in cui gli utenti possono menzionare esplicitamente le autorizzazioni di runtime come l’accesso al filesystem o la limitazione dei thread di lavoro.
Dopo aver visto Node js cos’è, occupiamoci di Deno.
Cos’ è Deno?
Deno è un runtime JavaScript più recente rispetto a Node.js. Introdotto nel 2018, Deno sta prendendo di mira alcune delle carenze di Node.js, inclusi problemi di sicurezza e la mancanza di supporto integrato per le moderne funzionalità JavaScript. Deno è basato sul linguaggio di programmazione Rust (con runtime Tokio), focalizzato su misure di sicurezza predefinite. Deno è costituito da diversi componenti che mancano a Node.js, come un sistema di moduli integrato, il supporto per TypeScript pronto all’uso e la possibilità di importare moduli direttamente dal loro URL.
Lo stato di Deno al 2023 vede un forte guadagno di popolarità e sta diventando un’alternativa effettiva per gli sviluppatori, anche se Node.js è ancora dominante nella creazione di applicazioni lato server. Deno sta rapidamente attirando l’attenzione degli sviluppatori e recuperando terreno. Il suo sistema di moduli consente la gestione delle dipendenze e il controllo delle versioni, un vantaggio per progetti su larga scala.
Node.js e Deno presentano differenze significative nell’architettura e nelle funzionalità. Alcuni punti chiave da considerare qui sono sicurezza, supporto della community e supporto TypeScript.
- Node.js è costruito esclusivamente sul motore V8, a differenza di Deno, che utilizza il linguaggio di programmazione Rust e il runtime Tokio.
- Node.js utilizza il sistema di moduli commonJS, mentre Deno utilizza il sistema di moduli ECMAScript.
- Deno ha anche un sistema di gestione delle dipendenze con un sistema di moduli centralizzato che consente agli sviluppatori di importare moduli direttamente dagli URL, una caratteristica saliente di Deno. Ad esempio, considera la differenza nell’importazione dei moduli, come mostrato di seguito.
Node.js gode di un vasto e maturo ecosistema con un ampio range di libreria, framework (tipo Nest.js) e strumenti per rendere più facile ed efficiente la vita degli sviluppatori. Inoltre, il supporto di cui gode Node.js da parte degli sviluppatori JavaScript è sconfinato. Ancora oggi la community attivamente contribuisce allo sviluppo del suo ecosistema. Node.js è una scelta eccellente per la creazione di applicazioni Web e API grazie alla sua eccezionale velocità, scalabilità e ubiquità con il linguaggio JavaScript. Sebbene esistano alcune limitazioni, come l’esecuzione a thread singolo e potenziali complessità di callback, gli sviluppatori possono mitigarle con funzionalità JavaScript moderne e modelli architettonici. Nel complesso, Node.js consente agli sviluppatori di creare applicazioni ad alte prestazioni in modo efficiente, rendendolo un’opzione interessante per lo sviluppo web moderno.
Di contro, Deno possiedere una gestione nativa con TypeScript, cosa che possiede anche Node.js, ma richiede molto dispendio di tempo in fase di configurazione, questo rende Deno una scelta più indicata agli sviluppatori che predilogono la tipizzazione statica.
Nonostante ciò, Deno è ancora acerbo, poiché non gode di un ecosistema vasto come quello di Node.js ed inoltre non ha alla base una comunità di sviluppatori forte. Questo lo rende una tecnologia di nicchia, più ricercata e meno richiesta anche in ambito lavorativo. Inoltre, i moduli di Deno non sono del tutto compatibili con quelli di Node.js già esistenti in un progetto.
Node.js è la prima scelta proprio per questo, è talmente profondo che i suoi contro vengono messi in secondo piano in quanto il suo diretto rivale, ha dimostrato che ha ancora bisogno di carburare.