Skip to Content
Le documentazioni sono in costruzione, puoi utilizzare la navigazione sulla sinistra come roadmap per monitorare i tuoi progressi. Grazie!
01 Introduzione a JavaScriptAmbienti di esecuzione (Browser, Node.js, Deno, Bun)

Ambienti di esecuzione (Browser, Node.js, Deno, Bun)

JavaScript è nato per il browser, ma oggi può essere eseguito in molti ambienti diversi. Un ambiente di esecuzione (runtime) è il contesto in cui il codice JavaScript viene interpretato ed eseguito, e mette a disposizione:

  • il motore JavaScript (che interpreta il linguaggio),
  • le API di sistema (file, rete, timer, ecc.),
  • un event loop per gestire le operazioni asincrone.

I principali ambienti di esecuzione moderni sono:

  • Browser
  • Node.js
  • Deno
  • Bun

Ognuno ha obiettivi, caratteristiche e casi d’uso differenti.


Browser

Il browser è l’ambiente di esecuzione originale di JavaScript. Ogni browser integra un motore JS:

  • Chrome / Edge → V8
  • Firefox → SpiderMonkey
  • Safari → JavaScriptCore

Caratteristiche principali

  • Accesso al DOM (Document Object Model)
  • Gestione degli eventi utente (click, input, scroll)
  • API web: fetch, localStorage, WebSocket, Canvas, ecc.
  • Sicurezza tramite sandbox (niente accesso diretto al file system o al sistema operativo)

Casi d’uso

  • Interfacce utente interattive
  • Single Page Application (React, Vue, Angular)
  • Animazioni e giochi
  • Applicazioni web progressive (PWA)

Limitazioni

  • Accesso limitato al sistema
  • Dipendenza dalle politiche di sicurezza del browser
  • Differenze di supporto tra browser

Node.js

Node.js è un runtime JavaScript lato server basato sul motore V8.

Caratteristiche principali

  • Accesso completo al file system, rete e processi
  • Moduli nativi (fs, http, path, ecc.)
  • Sistema di pacchetti con npm
  • Event loop non bloccante

Casi d’uso

  • Backend API e server web
  • Script di automazione
  • Tool di build (Webpack, Vite, ESLint)
  • Microservizi

Limiti

  • Sicurezza affidata allo sviluppatore
  • Gestione delle dipendenze spesso complessa
  • Performance I/O buone, ma single-thread di default

Deno

Deno è un runtime moderno creato dallo stesso autore di Node.js. Nasce per correggere alcune scelte progettuali di Node.

Caratteristiche principali

  • Basato su V8
  • Supporto nativo a TypeScript
  • Sicurezza per permessi espliciti
  • Import da URL
  • API web standard (fetch, WebSocket, ecc.)

Casi d’uso

  • API server
  • Script sicuri
  • Progetti TypeScript
  • Applicazioni serverless

Limiti

  • Ecosistema più piccolo rispetto a Node
  • Meno librerie mature
  • Community più ridotta

Bun

Bun è un runtime recente focalizzato su performance e semplicità.

Caratteristiche principali

  • Motore basato su JavaScriptCore
  • Velocissimo nell’installazione e avvio
  • Supporto nativo a TypeScript
  • Package manager integrato
  • Compatibilità con Node.js

Casi d’uso

  • Backend ad alte prestazioni
  • Tool di sviluppo
  • Progetti full-stack moderni

Limiti

  • Progetto giovane
  • API in evoluzione
  • Meno stabilità rispetto a Node

Confronto rapido

AmbienteMotoreSicurezzaFile systemTarget
BrowserVariAltaFrontend
Node.jsV8MediaBackend
DenoV8AltaSolo con permessiBackend
BunJSCMediaFull-stack

Quale scegliere?

  • Frontend web → Browser
  • Backend stabile e maturo → Node.js
  • Progetti moderni e sicuri → Deno
  • Performance e tool all-in-one → Bun

Ogni ambiente condivide il linguaggio JavaScript, ma cambia ciò che puoi fare con esso. Conoscere i runtime significa scegliere lo strumento giusto per ogni progetto.

Aggiornato il