Obiettivi della lezione:
- Comprendere i principi dell’architettura MVC. Gli studenti impareranno a identificare e descrivere i componenti dell’architettura Model-View-Controller e il loro ruolo nello sviluppo di applicazioni web.
- Analizzare le funzionalità di Node.js. Gli studenti acquisiranno conoscenze sul runtime JavaScript Node.js e su come viene utilizzato per costruire applicazioni server-side.
- Esaminare i framework Express.js e Socket.io. Gli studenti comprenderanno le caratteristiche e i vantaggi di questi framework e come utilizzarli in combinazione con Node.js.
Architettura MVC (Model-View-Controller)
L’architettura MVC è un modello di progettazione software utilizzato per separare le preoccupazioni in tre componenti principali: Model, View e Controller. Questo approccio facilita la gestione del codice, migliorando la modularità e la manutenibilità delle applicazioni.
Componenti dell’architettura MVC
- Model: Rappresenta la logica di business e la gestione dei dati. Il Model è responsabile dell’accesso e della manipolazione dei dati, spesso interfacciandosi con un database.
- Esempio: In un’applicazione di e-commerce, il Model potrebbe includere le definizioni di prodotto, utente e ordine.
- View: Rappresenta l’interfaccia utente e la visualizzazione dei dati. La View è responsabile della presentazione delle informazioni all’utente finale.
- Esempio: In un’applicazione di e-commerce, la View potrebbe includere le pagine HTML che visualizzano i prodotti, i carrelli della spesa e le conferme degli ordini.
- Controller: Gestisce l’interazione dell’utente e le richieste. Il Controller riceve input dall’utente tramite la View, elabora tali input utilizzando il Model e aggiorna la View di conseguenza.
- Esempio: In un’applicazione di e-commerce, il Controller potrebbe gestire le richieste di ricerca dei prodotti, l’aggiunta di articoli al carrello e la finalizzazione degli ordini.
Node.js
Node.js è un runtime JavaScript open source che consente l’esecuzione del codice JavaScript lato server. È basato sul motore JavaScript V8 di Google Chrome ed è progettato per costruire applicazioni di rete scalabili.
Caratteristiche principali di Node.js
- I/O asincrono e non bloccante: Node.js utilizza un modello di I/O asincrono che permette di gestire un gran numero di connessioni simultaneamente senza bloccare l’esecuzione del codice.
- Architettura basata su eventi: Node.js è progettato per essere leggero ed efficiente, utilizzando un ciclo di eventi per gestire le operazioni asincrone.
- Eccezionale ecosistema di pacchetti: Node.js include
npm
(Node Package Manager), che offre accesso a una vasta gamma di pacchetti e librerie open source.
Installazione di Node.js
- Installazione su Linux (esempio con Ubuntu):
sudo apt update
sudo apt install nodejs
sudo apt install npm
- Verifica dell’installazione:
node -v
npm -v
Esempio di server semplice con Node.js
const http = require('http');
const hostname = '127.0.0.1';
const port = 3000;
const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('Hello, World!\n');
});
server.listen(port, hostname, () => {
console.log(`Server running at http://${hostname}:${port}/`);
});
Express.js
Express.js è un framework per applicazioni web basato su Node.js che semplifica la creazione di applicazioni server-side. Offre una serie di funzionalità per la gestione delle richieste HTTP, la configurazione dei middleware e la definizione delle rotte.
Caratteristiche principali di Express.js
- Middleware: Express.js utilizza middleware per gestire le richieste HTTP. I middleware sono funzioni che hanno accesso all’oggetto richiesta, all’oggetto risposta e alla funzione
next
. - Routing flessibile: Express.js consente di definire rotte per gestire richieste specifiche a vari endpoint.
- Gestione semplice delle risposte: Express.js offre metodi per inviare risposte, gestire reindirizzamenti e gestire errori.
Esempio di applicazione semplice con Express.js
- Installazione di Express.js:
npm install express
- Server Express di base:
const express = require('express');
const app = express();
const port = 3000;
app.get('/', (req, res) => {
res.send('Hello, World!');
});
app.listen(port, () => {
console.log(`Server running at http://localhost:${port}/`);
});
Socket.io
Socket.io è una libreria per la comunicazione in tempo reale tra client e server. È spesso utilizzata per applicazioni che richiedono aggiornamenti in tempo reale, come chat, giochi online e dashboard live.
Caratteristiche principali di Socket.io
- Comunicazione bidirezionale: Socket.io consente la comunicazione bidirezionale tra client e server in tempo reale.
- Supporto per vari trasporti: Socket.io utilizza WebSockets quando disponibili, ma può ricorrere ad altri metodi di trasporto come polling lungo.
- Eventi personalizzati: Socket.io permette di definire eventi personalizzati per gestire varie azioni nel flusso di comunicazione.
Esempio di applicazione con Socket.io
- Installazione di Socket.io:
npm install socket.io
- Server Socket.io di base:
const express = require('express');
const http = require('http');
const socketIo = require('socket.io');
const app = express();
const server = http.createServer(app);
const io = socketIo(server);
io.on('connection', (socket) => {
console.log('a user connected');
socket.on('disconnect', () => {
console.log('user disconnected');
});
});
server.listen(3000, () => {
console.log('listening on *:3000');
});
Esercitazioni pratiche
- Implementazione di un’applicazione MVC con Node.js e Express.js:
- Creare una semplice applicazione web utilizzando l’architettura MVC. Gli studenti dovranno definire modelli, viste e controller per gestire una funzionalità di base, come un’applicazione di gestione delle attività.
- Creazione di un server in tempo reale con Socket.io:
- Creare un’applicazione di chat in tempo reale utilizzando Socket.io. Gli studenti dovranno implementare la comunicazione bidirezionale tra client e server e gestire eventi personalizzati per l’invio e la ricezione di messaggi.