Node.js remiasi keliais design patternais, kurie tinka jos modulių sistemai, asinchroniniam modeliui ir srautiniam I/O. Dažniausi, kuriuos turėtų atpažinti kiekvienas backend kūrėjas:
Node.js remiasi keliais design patternais, kurie tinka jos modulių sistemai, asinchroniniam modeliui ir srautiniam I/O. Dažniausi, kuriuos turėtų atpažinti kiekvienas backend kūrėjas:
module.exports / export, o vidų laikote privatų. Kodo organizavimo Node'e pamatas.// db.js — kiekvienas `require("./db")` gauna tą patį pool'ą (singleton per modulių kešą).
const pool = createPool(process.env.DATABASE_URL);
module.exports = pool;
function createLogger(kind) {
return kind === "json" ? new JsonLogger() : new TextLogger();
}
EventEmitter, streams ir dauguma core modulių jį naudoja.const { EventEmitter } = require("node:events");
const bus = new EventEmitter();
bus.on("order:paid", (o) => sendReceipt(o));
bus.emit("order:paid", order);
(ctx, next), išpopuliarintas Express/Koa. Puikiai tinka kertiniams (cross-cutting) reikalams (auth, logging, validation).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"));
| Poreikis | Pattern |
|---|---|
| Vienas bendras resursas | Singleton (modulių kešas) |
Kurti objektus, slėpti new | Factory |
| Reaguoti į asinchroninius event'us | Observer / EventEmitter |
| Kertinė užklausų logika | Middleware |
| Saugiai apdoroti didelius duomenis | Streams / pipeline |
| Testuojamos, atsietos priklausomybės | Dependency Injection |
Pattern'ai yra bendras žodynas: pasakymas „config yra modulio kešuotas singleton'as" arba „auth yra middleware" perteikia dizainą keliais žodžiais. Pati Node šerdis (EventEmitter, streams, modulių sistema) sukurta iš jų, tad jų atpažinimas padeda skaityti framework'us ir struktūrizuoti savo servisus. Interviuotojai šį klausimą naudoja patikrinti, ar jūs ne tik jungiate callback'us bet kaip, bet pasiekiate tinkantį pattern'ą — ir žinote jo kompromisus, pavyzdžiui, kad singleton'as apsunkina globalios būsenos testavimą.
IT pokalbių klausimų biblioteka su išsamiais atsakymais — nuo Junior iki Senior.
Paaukoti