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 lintedeno testsono 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:
| Autorizzazione | Descrizione |
|---|---|
--allow-read | Lettura di file o directory. |
--allow-write | Scrittura su file o directory. |
--allow-net | Connessioni di rete (HTTP, TCP, UDP). |
--allow-env | Accesso alle variabili di ambiente. |
--allow-run | Esecuzione di sottoprocessi. |
--allow-ffi | Interfaccia 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
~/.denoe 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
assertEqualsdalla 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/denosemplifica 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 --checkgarantisce la qualità.
Buone pratiche di sicurezza
- Autorizzazioni minime, concedi solo quanto necessario (
--allow-read=./data). - Lockfile, utilizzare
deno lockper bloccare le versioni del modulo. - Verifica delle dipendenze, controlla gli URL esterni prima di fidarti.
- Scansione delle vulnerabilità, strumenti come
trivypossono analizzare l'immagine Docker.
Lista di controllo rapida per avviare un progetto Deno
- Installa Deno (curl o brew).
- Crea
deno.jsoncon 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
- TypeScript per applicazioni: Guida allo sviluppo di TypeScript
- Operatori Cloudflare: Guida pratica all'Edge Computing Serverless
- Autorizzazione e permessi nelle applicazioni: controllo dell'accesso sicuro
- Autorizzazione e permessi - Fondamenti di buone pratiche
- TypeScript avanzato: padroneggiare tipi complessi, generici e di utilità
- Sviluppo Web moderno nel 2025: tendenze, strumenti e strategie innovative
