Lezione 1 – Web App con react-vite-nodejs-introduzione

Serie · Sviluppo Web Lezione 1 di 10 ⏱ ~15 min lettura Livello: Principiante

Se hai già scritto qualche riga di HTML e CSS e vuoi fare il salto verso lo sviluppo web moderno, sei nel posto giusto. In questa serie costruiamo da zero un’applicazione web completa — con interfaccia interattiva, routing, backend e deploy online — usando lo stack che oggi domina il mercato: Node.js + React + Vite, tutto dentro Visual Studio Code.

Non è un tutorial “fai copia-incolla e funziona”. Ogni lezione spiega perché si fa così, non solo come. Alla fine del percorso avrai un’applicazione reale nel tuo portfolio GitHub e una comprensione solida dell’intero flusso di sviluppo frontend–backend.

// prerequisiti

Conoscenza base di HTML, CSS e JavaScript (variabili, funzioni, array, oggetti). Non serve esperienza con React o Node.js — partiamo da zero. Serve un computer con Windows, macOS o Linux e connessione internet per scaricare gli strumenti.

Perché questo stack?

Prima di scrivere una riga di codice vale la pena capire perché esistono questi strumenti e quale problema risolvono. Non nascono per complicare la vita — nascono per risolvere problemi reali che emergono quando le applicazioni crescono.

Il problema che Node.js risolve

JavaScript nasce nel 1995 come linguaggio per il browser. Per decenni, se volevi un server backend dovevi imparare un secondo linguaggio: PHP, Python, Ruby, Java. Nel 2009 Ryan Dahl presenta Node.js: un runtime che esegue JavaScript fuori dal browser, direttamente sul sistema operativo, costruito sul motore V8 di Google Chrome.

// definizione formale

Node.js è un runtime JavaScript asincrono e basato su eventi, progettato per costruire applicazioni di rete scalabili. Usa un modello non-bloccante a I/O: invece di aspettare che una lettura da disco o una chiamata di rete finisca (bloccando il thread), il programma continua ad eseguire altro codice e riceve una notifica quando l’operazione è completata.

Il risultato pratico: con un solo linguaggio — JavaScript — puoi scrivere sia il codice che gira nel browser (frontend) sia quello che gira sul server (backend). Stessa sintassi, stessi strumenti, stesso ecosistema di pacchetti.

Il problema che React risolve

Costruire interfacce utente con JavaScript puro diventa rapidamente un problema di gestione dello stato. Quando l’utente clicca un bottone, aggiorna un form, o arrivano nuovi dati dal server — chi aggiorna cosa nel DOM? Come si mantiene sincronizzata l’interfaccia con i dati? Con JavaScript vanilla diventa un labirinto di document.getElementById e listener annidati.

Facebook affronta questo problema su scala nel 2013 e rilascia React: una libreria che introduce il concetto di interfaccia dichiarativa. Invece di dire “aggiorna questo elemento DOM”, dici “questa è la struttura dell’interfaccia quando i dati sono in questo stato” — e React si occupa di capire cosa deve cambiare nel DOM reale (via Virtual DOM e reconciliation). Il codice diventa molto più prevedibile e manutenibile.

APPROCCIO IMPERATIVO (JS puro)
// devi gestire tutto a mano
const btn = document.getElementById('btn')
const count = document.getElementById('count')
let n = 0
btn.addEventListener('click', () => {
  n++
  count.textContent = n  // aggiorna manualmente
})
APPROCCIO DICHIARATIVO (React)
// descrivi lo stato → React aggiorna il DOM
function Counter() {
  const [n, setN] = useState(0)
  return (
    <button onClick={() => setN(n + 1)}>
      Cliccato {n} volte
    </button>
  )
}

Il problema che Vite risolve

React non è JavaScript standard: usa JSX (sintassi tipo HTML dentro JavaScript) che i browser non capiscono. Serve uno strumento di build che trasformi il codice sorgente in JavaScript eseguibile dal browser. Il predecessore storico è Webpack — potente, ma con un problema: all’aumentare del progetto, il server di sviluppo diventa lento. Modifichi un file, aspetti 10-30 secondi prima di vedere il risultato.

Nel 2021 Evan You (il creatore di Vue.js) rilascia Vite (pronunciato “vit”, dal francese “veloce”). L’idea chiave: i browser moderni supportano nativamente gli ES Modules. Invece di bundlare tutto il codice prima di servirlo, Vite serve i singoli file trasformati on-demand. Il risultato: avvio del server di sviluppo in meno di un secondo, aggiornamenti istantanei (Hot Module Replacement) senza ricaricare la pagina. La differenza si sente subito.

StrumentoRuoloProblema risolveAlternative
Node.jsRuntime JavaScript server-side + gestore pacchetti (npm)Eseguire JS fuori dal browser; gestire dipendenze del progettoDeno, Bun
ReactLibreria UI per costruire interfacce a componentiSincronizzazione stato–DOM, riusabilità UI, gestione complessitàVue.js, Svelte, Angular
ViteBuild tool e dev server ultra-veloceCompilazione JSX, HMR istantaneo, bundling ottimizzato per produzioneWebpack, Parcel, esbuild
VS CodeIDE (editor di codice)Editing, debugging, integrazione Git, estensioni per il web devWebStorm, Neovim, Zed

Come funzionano insieme

Capire come questi pezzi si integrano è fondamentale prima di scrivere la prima riga di codice. Ecco l’architettura che costruiremo in questa serie:

// architettura dell’applicazione
FRONTEND (Browser)
⚛️ React — componenti UI
🔀 React Router — navigazione
⚡ Vite — dev server + build
porta: 5173
HTTP / REST
JSON
BACKEND (Server)
🟢 Node.js — runtime
🚂 Express — framework HTTP
🗄️ JSON / SQLite — dati
porta: 3001
Entrambi sviluppati con VS Code · Gestione pacchetti con npm · Deploy su Vercel + Render

Durante lo sviluppo, Vite fa girare un server locale sulla porta 5173 che serve il frontend React. Express fa girare il backend sulla porta 3001. I due parlano tra loro via chiamate HTTP. In produzione, il frontend compilato da Vite viene deployato su Vercel (una CDN globale), il backend su Render (un servizio cloud).

Il progetto che costruiremo

Attraverso le 10 lezioni costruiremo DevNotes — un’applicazione per gestire appunti tecnici (snippet di codice, link utili, note personali). È semplice abbastanza da imparare senza distrazioni, ma abbastanza completa da toccare ogni parte dello stack:

📝
CRUD COMPLETO

Crea, leggi, aggiorna ed elimina note con tag, titolo e contenuto. Imparerai le operazioni fondamentali di qualunque applicazione.

🔍
RICERCA E FILTRI

Filtra note per tag, cerca per titolo. Gestione dello stato dell’interfaccia con React hooks e comunicazione con l’API.

🔐
AUTENTICAZIONE JWT

Login, registrazione e rotte protette. Imparerai come funziona l’autenticazione stateless con JSON Web Token.

🚀
DEPLOY ONLINE

Alla fine del percorso l’app sarà accessibile online, con URL pubblico da inserire nel tuo portfolio GitHub.

Il percorso completo — 10 lezioni

#TitoloArgomentiLab GitHub
L01Setup ambiente ← sei quiNode.js, npm, Vite, VSCode + estensioni, primo progettolab-01-setup-ambiente.md
L02Componenti e JSXStruttura progetto Vite, JSX, componenti funzionali, propslab-02-componenti-jsx.md
L03Stato e interattivitàuseState, gestione eventi, useEffect, ciclo di vitalab-03-state-hooks.md
L04Stile: CSS Modules e TailwindCSS Modules, configurazione Tailwind in Vite, utility classeslab-04-styling.md
L05Routing con React Router v6SPA vs MPA, Route/Link/Outlet, useParams, navigazionelab-05-routing.md
L06Lavorare con le API RESTfetch, async/await, custom hook useFetch, error/loading stateslab-06-api-rest.md
L07Backend con ExpressServer Node.js, route CRUD, middleware, CORS, validazionelab-07-express-backend.md
L08Connettere frontend e backendProxy Vite, chiamate API locali, form con POST, gestione errorilab-08-fullstack.md
L09Autenticazione JWTjsonwebtoken, bcrypt, protected routes, localStorage, login flowlab-09-auth-jwt.md
L10Deploy: Vercel + RenderBuild produzione, variabili d’ambiente, CI/CD automaticolab-10-deploy.md

Lezione 1 — Setup dell’ambiente di sviluppo

In questa prima lezione non scriviamo ancora codice dell’applicazione. Installiamo gli strumenti, configuriamo l’editor e creiamo il primo progetto Vite + React per capire cosa genera di default e come funziona il dev server.

Alla fine di questa lezione avrai:

  • Node.js installato e funzionante (con npm)
  • Visual Studio Code configurato con le estensioni giuste per React
  • Il tuo primo progetto Vite + React in esecuzione su localhost:5173
  • Comprensione della struttura delle cartelle generate da Vite
// come seguire questa serie

Ogni articolo è accompagnato da un file .md su GitHub con le istruzioni pratiche passo-passo. Leggi prima l’articolo per capire il “perché”, poi apri il file .md per il “come”. I due si completano — l’uno senza l’altro è meno efficace. La repo è profgiagnotti/react-vite-guide.

⚗️
LAB PRATICO — LEZIONE 1

Il file lab-01-setup-ambiente.md contiene le istruzioni dettagliate per installare Node.js, configurare VSCode, creare il primo progetto e capire ogni file generato. Include comandi per Windows, macOS e Linux.

Apri su GitHub →
📌 Riepilogo — Cosa abbiamo visto
  • Node.js permette di eseguire JavaScript lato server e fornisce npm per gestire le dipendenze del progetto.
  • React introduce la programmazione dichiarativa per le interfacce: descrivi lo stato e React aggiorna il DOM in modo ottimale.
  • Vite sostituisce Webpack con un approccio basato su ES Modules nativi: dev server istantaneo e HMR velocissimo.
  • Il progetto che costruiremo si chiama DevNotes: CRUD, ricerca, autenticazione JWT e deploy online.
  • La prossima lezione esplora la struttura del progetto generato da Vite e costruiamo i primi componenti React con JSX e props.

Lascia un commento