Creare ed eseguire un progetto Express.js con ServBay
Cos’è Express.js?
Express.js è un framework web veloce, open source ed estremamente minimalista basato su Node.js. Offre una vasta gamma di funzionalità potenti per la creazione di applicazioni web a pagina singola, multipagina o ibride. Express.js è tra i framework più popolari nell'ecosistema Node.js, apprezzato dagli sviluppatori per il design semplice e flessibile.
Principali caratteristiche e vantaggi di Express.js
- Semplicità e flessibilità: Express.js offre un'API intuitiva e un meccanismo di middleware flessibile, rendendo l’esperienza di sviluppo rapidissima.
- Middleware: Supporta numerosi middleware, facilitando la gestione di richieste e risposte (ad esempio per parsing del body, gestione delle sessioni, erogazione di file statici).
- Routing: Potente sistema di routing in grado di gestire richieste in base ai diversi metodi HTTP (GET, POST, PUT, DELETE ecc.) e percorsi URL.
- Integrazione: Si integra facilmente con vari motori di template (come Pug, EJS, Handlebars), database (come MongoDB, MySQL, PostgreSQL) e altri moduli Node.js.
- Community e ecosistema: Vanta una community vasta e una ricca selezione di middleware e plugin di terze parti: soluzioni e risorse si trovano facilmente per ogni problema.
Con Express.js gli sviluppatori possono realizzare rapidamente applicazioni web e API performanti. ServBay, come potente ambiente locale di sviluppo web, mette a disposizione un ambiente Node.js pratico e potenti funzionalità di gestione siti (reverse proxy) e database per l’esecuzione di progetti Express.js.
Creare ed eseguire un progetto Express.js con ServBay
Questa guida ti mostrerà come creare, configurare ed eseguire un progetto Express.js sfruttando l’ambiente Node.js fornito da ServBay. Utilizzeremo la funzione Siti web di ServBay per impostare il server web e sfrutteremo il reverse proxy per consultare l’applicazione. Questo metodo è particolarmente adatto per applicazioni che richiedono di girare su porte specifiche come Node.js, Python, Go, Java, ecc.
Prerequisiti
Prima di iniziare, assicurati di aver rispettato queste condizioni:
- Hai installato con successo ServBay su macOS.
- Hai installato e abilitato il pacchetto Node.js in ServBay. Puoi gestirlo dal pannello di controllo ServBay nella scheda “Pacchetti”.
- (Facoltativo) Se prevedi di collegarti a un database, assicurati di aver installato e abilitato i pacchetti database necessari (ad es. MariaDB, PostgreSQL, MongoDB, Redis, MySQL).
- Hai dimestichezza di base con il terminale o la riga di comando.
Creare un progetto Express.js
Inizializza il progetto
Prima di tutto, apri il terminale e spostati nella cartella root dei siti suggerita da ServBay:
/Applications/ServBay/www
. Utilizza poi il comandonpx express-generator
per generare rapidamente la struttura base di un progetto Express.js.npx
(incluso da npm v5.2+) esegue i pacchetti Node.js senza installarli globalmente.bashcd /Applications/ServBay/www npx express-generator servbay-express-app
1
2Questo crea una nuova cartella
servbay-express-app
in/Applications/ServBay/www
con la struttura essenziale di un progetto Express.js.Installa le dipendenze del progetto
Entra nella cartella appena creata
servbay-express-app
e usanpm install
per installare tutte le dipendenze necessarie: il framework Express.js e i pacchetti di default per template, file statici e altro.bashcd servbay-express-app npm install
1
2Attendi il completamento dell’installazione.
Modifica dell’output di Express.js
Per verificare che il progetto funzioni, modifichiamo l’homepage di default.
Modifica il file
routes/index.js
In un progetto Express.js, i router gestiscono le varie richieste URL. Apri il file
routes/index.js
nella directory del progetto: questo gestisce le richieste GET sulla root/
. Modifica il codice per non renderizzare più il template Pug di default, ma per inviare una semplice risposta di testo.javascriptvar express = require('express'); var router = express.Router(); /* GET home page. */ router.get('/', function(req, res, next) { // Modifica in modo da inviare una risposta testuale res.send('Hello ServBay!'); }); module.exports = router;
1
2
3
4
5
6
7
8
9
10Salva il file.
Avviare la modalità sviluppo
Durante lo sviluppo, è conveniente avviare un server locale per vedere subito le modifiche. Con un progetto Express.js, puoi fare ciò tramite il comando npm start
.
Esegui il server di sviluppo
Dalla root del progetto,
servbay-express-app
, lancia il server di sviluppo. Imposta la variabile d’ambientePORT
per specificare la porta di ascolto (qui scegliamo la8585
). La variabileDEBUG
abilita i log di debug.bashcd /Applications/ServBay/www/servbay-express-app PORT=8585 DEBUG=servbay-express-app:* npm start
1
2Il terminale mostrerà che l’app Express.js è in ascolto sulla porta
8585
.Configura il reverse proxy per il sito ServBay
Poiché l’app Express.js gira su una porta personalizzata (8585, non 80/443), usiamo la funzione Siti web di ServBay per configurare un reverse proxy. Il web server di ServBay (tipicamente Caddy) ascolta sulle porte standard 80/443 e inoltra le richieste per domini specifici verso l’app Express in
127.0.0.1:8585
.Apri il pannello ServBay, vai nella scheda “Siti web” e aggiungi un nuovo sito. Configura così:
- Nome:
My first Express.js dev site
(scegli un nome facilmente riconoscibile) - Dominio:
servbay-express-test.servbay.demo
(il dominio.servbay.demo
sfrutta la User CA di ServBay per HTTPS automatico) - Tipo di sito: seleziona
Reverse Proxy
- IP:
127.0.0.1
(olocalhost
) - Porta:
8585
(la porta su cui Express.js ascolta)
Salva e applica le modifiche: ServBay aggiornerà automaticamente la configurazione del web server e genererà i certificati SSL (per domini
.servbay.demo
).Per dettagli concreti, consulta la guida di ServBay su aggiungere un sito Node.js per lo sviluppo.
- Nome:
Accedi al sito in modalità sviluppo
Apri il browser e visita il dominio appena configurato:
https://servbay-express-test.servbay.demo
. Il web server di ServBay riceve la richiesta e la passa tramite reverse proxy all’applicazione Express.js in ascolto sulla porta 8585. Dovresti vedere la pagina che mostra “Hello ServBay!”.ServBay supporta domini personalizzati e certificati SSL gratuiti (incluso supporto HTTPS automatico per
.servbay.demo
), consentendo di usare HTTPS anche in locale. Questo replica meglio la produzione e aiuta a rilevare potenziali problemi prima della messa online.
Deploy in modalità produzione
Quando il progetto Express.js è pronto, lo si può provare con impostazioni similari all’ambiente di produzione. Eseguire un test locale in produzione è utilissimo per i check finali.
Prepara l’ambiente produzione
Di solito, in produzione Express.js viene eseguito con la variabile
NODE_ENV
impostata suproduction
. Questo può influenzare alcuni comportamenti delle librerie (disattivare il debug, aumentare le performance, ecc.). Verifica che il codice risponda correttamente in queste condizioni.Avvia il server in modalità produzione
Dal percorso del progetto (
servbay-express-app
), lancia il server su una porta diversa (ad esempio8586
) e impostaNODE_ENV
suproduction
.bashcd /Applications/ServBay/www/servbay-express-app PORT=8586 NODE_ENV=production npm start
1
2Il terminale mostrerà che l’applicazione è in ascolto sulla porta
8586
.Configura un altro reverse proxy ServBay (Produzione)
Come già fatto per la modalità sviluppo, configura un sito ServBay per la versione produzione.
Apri ServBay, vai in “Siti web” e aggiungi un nuovo sito:
- Nome:
My first Express.js production site
- Dominio:
servbay-express-test-prod.servbay.demo
(oppure qualsiasi altro adatto alla simulazione produzione) - Tipo sito:
Reverse Proxy
- IP:
127.0.0.1
- Porta:
8586
(porta di ascolto dell’istanza produzione)
Salva e applica le modifiche.
- Nome:
Accedi al sito in modalità produzione
Dal browser, visita il dominio di produzione:
https://servbay-express-test-prod.servbay.demo
. Tramite il reverse proxy di ServBay, accederai all’istanza Express.js attiva sulla porta 8586. In questo modo puoi testare il comportamento dell’app in locale come se fosse già in ambiente produzione.
Collegamento ai database
ServBay supporta vari pacchetti database per lo sviluppo locale, inclusi MariaDB, PostgreSQL, MongoDB e Redis. Se hai abilitato i database da ServBay, il tuo progetto Express.js potrà collegarsi facilmente. Tipicamente ServBay imposta utenti e password di default: ad esempio, per MariaDB/MySQL l’utente root ha password
come password, per PostgreSQL l’utente è user
e la password è password
, il database predefinito è servbay_default
. Segui le indicazioni dell’interfaccia ServBay oppure i valori di default per stabilire la connessione.
Ecco alcuni esempi di connessione da progetti Express.js (assicurati di installare i relativi driver tramite npm install <nome-pacchetto>
).
Collegamento a MongoDB
Prima installa il driver
mongoose
(ORM molto diffuso):bashnpm install mongoose
1Poi aggiungi la connessione nel codice dell’app (ad esempio in
app.js
o in un file di configurazione dedicato):javascriptvar mongoose = require('mongoose'); // Connessione all’istanza MongoDB locale, database servbay-express-app // MongoDB di ServBay accetta connessioni senza autenticazione di default mongoose.connect('mongodb://localhost/servbay-express-app', { useNewUrlParser: true, useUnifiedTopology: true }) .then(() => console.log('Connected to MongoDB')) .catch(err => console.error('MongoDB connection error:', err));
1
2
3
4
5
6
7
8
9
10Verifica che il pacchetto MongoDB sia avviato in ServBay.
Collegamento a Redis
Installa il client
redis
:bashnpm install redis
1Nel codice del progetto:
javascriptvar redis = require('redis'); // Di default, Redis su ServBay è in esecuzione su localhost:6379, senza password var client = redis.createClient({ host: 'localhost', port: 6379 }); client.on('connect', function() { console.log('Connected to Redis'); }); client.on('error', function (err) { console.log('Redis Error: ' + err); }); // Esempio: settare e ottenere una chiave // client.set('mykey', 'Hello from Express!', redis.print); // client.get('mykey', function(err, reply) { // if (err) throw err; // console.log(reply); // Stampa "Hello from Express!" // }); // Utilizza l’oggetto client per le operazioni Redis quando necessario
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23Assicurati che Redis sia avviato in ServBay.
Collegamento a MariaDB / MySQL
ServBay supporta sia MariaDB che MySQL. Per connettersi di solito si usano i pacchetti npm
mariadb
omysql2
. Qui l’esempio è conmariadb
(può collegarsi anche a MySQL).Installa il pacchetto necessario:
bashnpm install mariadb # oppure npm install mysql2
1Poi usa le credenziali predefinite di ServBay (per MariaDB/MySQL l’utente root e password
password
).javascriptvar mariadb = require('mariadb'); // MariaDB/MySQL di ServBay gira su localhost:3306 var pool = mariadb.createPool({ host: 'localhost', port: 3306, // Porta di default user: 'root', // Utente predefinito ServBay password: 'password', // Password predefinita ServBay database: 'servbay_express_app', // Puoi creare questo database da ServBay connectionLimit: 5 // Dimensione del pool }); pool.getConnection() .then(conn => { console.log("Connected to MariaDB/MySQL"); // Usa l’oggetto conn per le query // conn.query("SELECT 1").then(...).catch(...).finally(() => conn.release()); conn.release(); // Rilascia la connessione al termine }) .catch(err => { console.log("Not connected due to error: " + err); });
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21Prima di connetterti, crea il database
servbay_express_app
tramite strumenti come phpMyAdmin, Adminer ecc. (accessibili via ServBay). Assicurati che MariaDB o MySQL siano attivi.Collegamento a PostgreSQL
Installa il client
pg
:bashnpm install pg
1Poi usa le credenziali di default di ServBay: utente
user
, passwordpassword
, databaseservbay_default
.javascriptvar { Pool } = require('pg'); // PostgreSQL su ServBay gira su localhost:5432 var pool = new Pool({ user: 'user', // Utente di default host: 'localhost', database: 'servbay_default', // Database di default (o altro creato da te) password: 'password', // Password di default port: 5432, // Porta di default }); pool.connect((err, client, done) => { if (err) { console.error('PostgreSQL connection error:', err); return; } console.log('Connected to PostgreSQL'); // Usa l’oggetto client per eseguire query // client.query('SELECT NOW()', (err, res) => { ... done(); }); done(); // Rilascia la connessione client }); // Oppure usando async/await // try { // const client = await pool.connect(); // console.log('Connected to PostgreSQL'); // // const res = await client.query('SELECT NOW()'); // // console.log(res.rows[0]); // client.release(); // Rilascia connessione // } catch (err) { // console.error('PostgreSQL connection error:', err); // }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31Verifica che il pacchetto PostgreSQL sia attivo in ServBay.
Riepilogo
Seguendo questi passaggi hai creato, configurato ed eseguito con successo un progetto Express.js con ServBay. Hai imparato a:
- Inizializzare un progetto con
express-generator
. - Eseguire applicazioni Express.js su porte specifiche.
- Configurare il reverse proxy tramite la funzione Siti web di ServBay e accedere all’app Node.js tramite le porte HTTP/S standard.
- Collegarti a diversi database molto comuni, sfruttando l’ambiente fornito da ServBay.
ServBay rende l’allestimento e la gestione di ambienti di sviluppo locale Node.js (Express.js) estremamente semplice, permettendoti di concentrarti sul codice. Funzionalità aggiuntive come certificati SSL automatici, backup dei siti e visualizzazione log semplificano ulteriormente il tuo flusso di lavoro locale.