Articolo originale: https://www.freecodecamp.org/news/intro-to-deno/

Cos'è Deno?

Deno è un nuovo runtime Javascript. È stato costruito da Ryan Dahl, il creatore di Node.js.

Dahl aveva alcune cose che si è pentito di aver fatto con Node e voleva creare un runtime in grado di risolvere quei problemi. Deno, come Node è costruito sul motore Javascript V8, ma è stato costruito con Rust invece di C++.

Uno degli obiettivi principali di Deno è avvicinare JavaScript lato server al JavaScript del browser.

Se hai scritto codice JavaScript sia in Node che nel browser, ti sei sicuramente imbattuto in differenze nelle API utilizzate nei rispettivi ambiti.  Deno mira ad avere le stesse API sul server che useresti nel browser. Daremo uno sguardo più approfondito a esempi specifici di questo successivamente.

Caratteristiche Fondamentali di Deno

Deno Usa TypeScript

Una delle caratteristiche più accattivanti di Deno è che tratta TypeScript come un linguaggio di prima classe pronto all'uso. Ciò significa che puoi eseguire o utilizzare TypeScript senza installare altri pacchetti esterni o di terze parti. Funziona e basta.

TypeScript è sempre più popolare nel mondo JavaScript e molti strumenti e aziende stanno spingendo per utilizzarlo. È bello vedere una nuova tecnologia progressista come TypeScript ricevere più attenzione, e ottenere lo status di prima classe in un grande progetto come Deno è un enorme passo avanti.

Deno è Sicuro per Impostazione Predefinita

Deno per impostazione predefinita è sicuro. Ciò significa che uno script,  a meno che non sia specificamente consentito, non può accedere ai file di sistema, all'ambiente (cose come le variabili di ambiente) o alla rete.

Per consentire in modo specifico l'accesso a queste funzionalità, è necessario passare il rispettivo flag nell'interfaccia da riga di comando. Ecco alcuni di quelli che utilizzerai di più:

  • Accesso alla rete: --allow-net, puoi anche specificare a quali URL possa avere accesso il codice. Per esempio: --allow-net=https://api.deepgram.com
  • Accesso a file: --allow-read
  • Accesso all'ambiente: --allow-env

Compatibilità di Deno con il Browser

Come ho detto sopra, Deno si sforza di avere la stessa API del browser. Il più significativo a mio parere è il supporto dell'API fetch .

In questi giorni, nella maggior parte del JavaScript che scrivo, utilizzo l'API fetch. Essere in grado di utilizzare la stessa sintassi del mio codice lato server rende molto più facile essere produttivi e riduce il carico del cambio di contesto.

Gestore Pacchetti

Deno non ha un registro di gestione dei pacchetti. Node usa npm per caricare pacchetti di terze parti nel tuo progetto, ma Deno carica i moduli tramite URL.

Onestamente sulle prime rimasi confuso da questo. Essendo "cresciuto" con Node e npm mi sembrava strano non avere una qualche sorta di gestore di pacchetti o un file  package.json.

Invece di un registro centralizzato, Deno consente agli sviluppatori di pacchetti di ospitare il loro codice dove vogliono. Se il codice è ospitato su GitHub, puoi registrare il tuo modulo sul loro servizio di hosting, dove è memorizzato nella cache. Ciò rende più facile per gli sviluppatori trovare e utilizzare il modulo.

Moduli ES

Deno usa anche i Moduli ES e non supporta la sintassi require(). Ancora una volta, la maggior parte del codice JavaScript che scrivo in questi giorni utilizza funzionalità moderne come questa, quindi è stato bello non preoccuparmi di essere sicuro di utilizzare la sintassi corretta a seconda dell'ambiente in cui sto codificando.

Libreria Standard

Deno viene fornito con una libreria standard che contiene funzionalità controllate dal team di Deno. Questo rende davvero facile iniziare a usare Deno.

Non è necessario ricorrere a pacchetti di terze parti per cose abbastanza basilari necessarie nel codice lato server. Come sviluppatore, è confortante sapere che il codice che utilizzo è ufficialmente supportato e approvato dal team di Deno.

Modulo di Test

Uno dei moduli inclusi nella libreria standard è il modulo di test. Questo modulo semplifica la scrittura di test in Deno e li rende più coerenti tra i progetti.

Questo potrebbe non essere un vantaggio per tutti, specialmente se alcuni hanno opinioni forti sulle librerie di test. Mi piace molto però. Poiché Deno continua a crescere, la coerenza tra i progetti renderà molto più semplice la manutenzione del codice e il cambio di progetto.

Deno contro Node

La domanda più grande che circonda Deno è come si confronta con Node.

Deno offre chiaramente alcuni vantaggi rispetto a Node. L'essere sicuro per impostazione predefinita è sicuramente una caratteristica interessante e gli sviluppatori vedranno il supporto pronto all'uso per TypeScript come una grande vittoria.

D'altra parte, Node ha una comunità molto ricca con un ecosistema consolidato e pacchetti di terze parti che semplificano l'avvio e l'esecuzione. Con l'annuncio che Deno supporterà la maggior parte dei pacchetti npm, mi immagino le persone passare a Deno prima piuttosto che dopo.

Deno ha anche recentemente rilasciato Deno Deploy alla beta pubblica. Ciò consentirà agli utenti di distribuire rapidamente codice JavaScript. Questo servizio potrebbe dare all'azienda Deno un vantaggio nel tempo e far crescere la base di utenti.

Conclusione

L'esperienza che ho avuto con Deno negli ultimi mesi è stata molto divertente. Mi è piaciuto lavorarci e sono entusiasta di vedere cosa ci riserverà il futuro.

Nelle prossime settimane scriverò diversi post per approfondire il mondo Deno.