Node.js ha bisogno di un framework
Node.js (Ryan Dahl, 2009) offre un runtime JavaScript server-side con event loop e I/O non-bloccante, ma l’HTTP API è di basso livello. Scrivere API REST richiede gestire routing, parsing di body, cookie, middleware. Serve un framework minimale che incapsuli i pattern comuni.
Il rilascio
Express.js viene rilasciato dal 16 novembre 2010 da TJ Holowaychuk (autore prolifico di strumenti JavaScript, anche Mocha, Koa, Stylus). Ispirato a Sinatra di Ruby, è un framework minimale per Node. Licenza MIT.
const express = require('express');
const app = express();
app.get('/users/:id', (req, res) => {
res.json({ id: req.params.id, name: 'Ada' });
});
app.listen(3000);
Caratteristiche
- Routing —
app.get(),app.post(), route con parametri e regex - Middleware —
app.use()pipeline componibile per cross-cutting concerns - Request/Response helpers —
res.json(),res.send(),req.params,req.query,req.body - Template engines — Pug (ex Jade), EJS, Handlebars supportati
- Static files —
express.static()per asset - Error handling — middleware a 4 argomenti
Ecosistema middleware
L’ecosistema Express è enorme:
- body-parser — parse JSON/URL-encoded bodies (integrato in Express 4.16+)
- cors — Cross-Origin Resource Sharing
- helmet — security headers
- morgan — HTTP request logger
- multer — multipart/form-data upload
- express-session — session management
- passport — autenticazione, 500+ strategie (OAuth, JWT, locale)
- express-rate-limit — rate limiting
Versioni principali
- 1.0 (2010) — prima release
- 2.x (2011) — ristrutturazione
- 3.x (2012) —
res.redirect(), routes array - 4.0 (aprile 2014) — middleware ora completamente modulare, rimozione di Connect dipendenza
- 5.0 (beta per molti anni, GA ottobre 2024) — Node.js 18+, async/await nativo, breaking changes minori
TypeScript e successori
Express è puro JavaScript. Per TypeScript-first si sono affermati:
- NestJS (2017) — framework TS opinato su Express/Fastify, DI, decoratori
- Fastify (2016) — JSON Schema validation, più veloce di Express
- Koa (2013, stesso TJ) — middleware async/await-based
Express resta però lo standard de facto per la maggioranza di codebase Node.
Impatto
Express ha definito il pattern middleware pipeline che ha influenzato ogni framework successivo (Koa, Fastify, NestJS, Gin di Go, Chi, perfino Express.py). Le community bootcamp e tutorial “MEAN/MERN stack” (MongoDB + Express + Angular/React + Node) lo hanno reso onnipresente.
Nel contesto italiano
Express è stato lo standard de facto per API Node.js in Italia dal 2012 in poi. Ogni team di sviluppo JS/TS in agenzie, startup, enti pubblici italiani lo ha usato. Molte applicazioni fintech, e-commerce, PA digitale italiane hanno backend Node+Express.
Riferimenti: Express.js (16 novembre 2010). TJ Holowaychuk. Licenza MIT. Ispirato a Sinatra (Ruby). Ecosistema middleware (body-parser, cors, helmet, passport). Express 4 (aprile 2014), 5 (ottobre 2024).
