Node.js se bazează pe câteva tipare de proiectare care se potrivesc sistemului său de module, modelului asincron și I/O-ului de streaming. Cele mai comune pe care orice dezvoltator backend ar trebui să le recunoască:
Node.js se bazează pe câteva tipare de proiectare care se potrivesc sistemului său de module, modelului asincron și I/O-ului de streaming. Cele mai comune pe care orice dezvoltator backend ar trebui să le recunoască:
module.exports / export, păstrând internele private. Fundamentul organizării codului în Node.// db.js — fiecare `require("./db")` primește același pool (singleton prin cache-ul de module).
const pool = createPool(process.env.DATABASE_URL);
module.exports = pool;
function createLogger(kind) {
return kind === "json" ? new JsonLogger() : new TextLogger();
}
EventEmitter, stream-urile și majoritatea modulelor de bază îl folosesc.const { EventEmitter } = require("node:events");
const bus = new EventEmitter();
bus.on("order:paid", (o) => sendReceipt(o));
bus.emit("order:paid", order);
(ctx, next), popularizat de Express/Koa. Excelent pentru preocupări transversale (auth, logging, validare).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"));
| Nevoie | Tipar |
|---|---|
| O resursă partajată | Singleton (cache-ul de module) |
Construiește obiecte, ascunde new | Factory |
| Reacționează la evenimente async | Observer / EventEmitter |
| Logică transversală de cerere | Middleware |
| Procesează date mari în siguranță | Stream-uri / pipeline |
| Dependențe testabile, decuplate | Injecția de dependențe |
Tiparele sunt un vocabular comun: a spune „configurația este un singleton memorat prin cache-ul de module" sau „auth-ul este middleware" comunică un design în câteva cuvinte. Însuși nucleul Node (EventEmitter, stream-uri, sistemul de module) este construit din ele, așa că recunoașterea lor te ajută să citești framework-uri și să-ți structurezi propriile servicii. Intervievatorii folosesc această întrebare pentru a verifica dacă nu doar conectezi callback-uri ad hoc, ci recurgi la tiparul potrivit — și îi cunoști compromisurile, cum ar fi un singleton care face starea globală mai greu de testat.
O bibliotecă de întrebări de interviu IT cu răspunsuri detaliate — de la Junior la Senior.
Donează