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 il 22 maggio 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
Impatto
Express sta definendo il pattern middleware pipeline destinato a influenzare i framework successivi. Con Node.js e MongoDB forma l’asse emergente per stack web full-JavaScript.
Nel contesto italiano
Express sta rapidamente diventando la scelta standard per API Node.js nei team JS italiani di agenzie, startup ed enti pubblici.
Riferimenti: Express.js (22 maggio 2010). TJ Holowaychuk. Licenza MIT. Ispirato a Sinatra (Ruby).
