Node.js si appoggia a una manciata di design pattern che si adattano al suo sistema di moduli, al modello async e all'I/O in streaming. I più comuni che ogni sviluppatore backend dovrebbe riconoscere:
Node.js si appoggia a una manciata di design pattern che si adattano al suo sistema di moduli, al modello async e all'I/O in streaming. I più comuni che ogni sviluppatore backend dovrebbe riconoscere:
module.exports / export, mantenendo privati gli interni. Il fondamento dell'organizzazione del codice in Node.// db.js — ogni `require("./db")` ottiene questo stesso pool (singleton tramite module cache).
const pool = createPool(process.env.DATABASE_URL);
module.exports = pool;
function createLogger(kind) {
return kind === "json" ? new JsonLogger() : new TextLogger();
}
EventEmitter, gli stream e la maggior parte dei moduli core lo usano.const { EventEmitter } = require("node:events");
const bus = new EventEmitter();
bus.on("order:paid", (o) => sendReceipt(o));
bus.emit("order:paid", order);
(ctx, next), resa popolare da Express/Koa. Ottima per le preoccupazioni trasversali (auth, logging, validazione).app.use((req, res, next) => { req.startedAt = Date.now(); next(); });
const { pipeline } = require("node:stream/promises");
await pipeline(fs.createReadStream("in"), gzip(), fs.createWriteStream("out.gz"));
| Necessità | Pattern |
|---|---|
| Una risorsa condivisa | Singleton (module cache) |
Costruire oggetti, nascondere new | Factory |
| Reagire a eventi async | Observer / EventEmitter |
| Logica di request trasversale | Middleware |
| Elaborare grandi dati in sicurezza | Streams / pipeline |
| Dipendenze testabili, disaccoppiate | Dependency Injection |
I pattern sono un vocabolario condiviso: dire "la config è un singleton in cache di modulo" o "l'auth è middleware" comunica un design in poche parole. Lo stesso core di Node (EventEmitter, stream, il sistema di moduli) è costruito da questi, quindi riconoscerli ti aiuta a leggere i framework e a strutturare i tuoi servizi. Gli intervistatori usano questa domanda per verificare che tu non colleghi callback ad hoc, ma ricorra al pattern che si adatta — e ne conosca i compromessi, come un singleton che rende lo stato globale più difficile da testare.
Una raccolta di domande di colloquio IT con risposte dettagliate — da Junior a Senior.
Dona