Deno
JavaScript
TypeScript
Runtime
Segurança
Permissões
Deploy
CLI
Modules
Web APIs

Introduzione a Deno: guida pratica per lo sviluppo moderno

Deno, creato da Ryan Dahl (lo stesso creatore di Node.js), è arrivato come un'alternativa sicura e moderna al tradizionale runtime JavaScript.

Introduzione a Deno: guida pratica per lo sviluppo moderno

Deno, creato da Ryan Dahl (lo stesso creatore di Node.js), è arrivato come alternativa sicura e moderna al tradizionale runtime JavaScript. Lanciato nel 2020, Deno offre il supporto nativo per TypeScript, un modello di autorizzazioni restrittive e una serie di strumenti integrati (formatter, linter, test runner).

Perché scegliere Deno?

  • Sicurezza per impostazione predefinita, il processo non ha accesso a file, rete o ambiente senza che lo sviluppatore lo conceda esplicitamente.
  • Supporto nativo per TypeScript, elimina la necessità di compilatori esterni.
  • Moduli ES-M, le importazioni tramite URL semplificano la gestione delle dipendenze.
  • Strumenti integrati, deno fmt, deno lint e deno test sono già pronti, riducendo la dipendenza da pacchetti esterni.

Installazione rapida

curl -fsSL https://deno.land/x/install/install.sh | sh ## ou via Homebrew brew install deno

Lo script aggiunge il codice binario a $PATH.

Struttura di un progetto Deno

Un tipico progetto Deno mantiene un'organizzazione snella. Alla radice ci sono deno.json, che definisce i permessi, le opzioni di importazione mappa e lint, e README.md. Il codice sorgente va nella directory src/, con il punto di ingresso in main.ts e i moduli di supporto in file come utils.ts. I test sono isolati in tests/, seguendo la convenzione dei nomi con il suffisso _test.ts, come main_test.ts.

Autorizzazioni, il cuore della sicurezza

Quando si esegue uno script, è necessario specificare a quali risorse può accedere:

AutorizzazioneDescrizione
--allow-readLettura di file o directory.
--allow-writeScrittura su file o directory.
--allow-netConnessioni di rete (HTTP, TCP, UDP).
--allow-envAccesso alle variabili di ambiente.
--allow-runEsecuzione di sottoprocessi.
--allow-ffiInterfaccia per funzioni estere (C).

Esempio di esecuzione sicura

deno run --allow-net src/main.ts

Lo script può effettuare richieste HTTP, ma non leggere file locali.

Moduli ES-M tramite URL

Deno ti consente di importare direttamente da URL pubblici:

import { serve } from "https://deno.land/std@0.203.0/http/server.ts";

Il modulo è memorizzato nella cache in ~/.deno e può essere modificato tramite tag.

Creazione di un semplice server HTTP

import { serve } from "https://deno.land/std@0.203.0/http/server.ts"; const handler = (request: Request): Response => { const url = new URL(request.url); if (url.pathname === "/") { return new Response("Olá Deno!", { status: 200 }); } return new Response("Not Found", { status: 404 }); }; serve(handler, { port: 8000 });

Il codice sopra crea un server che risponde Olá Deno! alla radice.

Test integrati

Deno include un test runner leggero:

denon test --allow-net tests/main_test.ts

Il test può utilizzare assertEquals dalla libreria standard.

Esempio di test (3 righe)

import { assertEquals } from "https://deno.land/std@0.203.0/testing/asserts.ts"; Deno.test("soma", () => assertEquals(2 + 2, 4));

Distribuisci in produzione

  • Docker, l'immagine ufficiale denoland/deno semplifica la distribuzione.
FROM denoland/deno:alpine-1.38.0 WORKDIR /app COPY . . RUN deno cache src/main.ts EXPOSE 8000 CMD ["run", "--allow-net", "src/main.ts"]
  • Edge, Deno Deploy (servizio serverless) accetta script direttamente tramite URL.
  • CI/CD, GitHub Actions con deno lint && deno test && deno fmt --check garantisce la qualità.

Buone pratiche di sicurezza

  1. Autorizzazioni minime, concedi solo quanto necessario (--allow-read=./data).
  2. Lockfile, utilizzare deno lock per bloccare le versioni del modulo.
  3. Verifica delle dipendenze, controlla gli URL esterni prima di fidarti.
  4. Scansione delle vulnerabilità, strumenti come trivy possono analizzare l'immagine Docker.

Lista di controllo rapida per avviare un progetto Deno

  • Installa Deno (curl o brew).
  • Crea deno.json con autorizzazioni minime.
  • Struttura delle directory (src, tests).
  • [] Scrivi il codice utilizzando le importazioni tramite URL.
  • Aggiungi test unitari.
  • Configura CI (lint, test, fmt).
  • Containerizzare con Docker o utilizzare Deno Deploy. -[] Esaminare le autorizzazioni prima della distribuzione.

Conclusione

Deno offre un ambiente sicuro, moderno e pronto per la produzione con meno dipendenze esterne. Adottando pratiche di autorizzazione restrittive, moduli ES-M e strumenti integrati, gli sviluppatori possono accelerare la fornitura di applicazioni robuste e mantenere un elevato standard di sicurezza.


Qual è la tua esperienza con Deno? Condividi nei commenti!

Leggi anche