Node.js ეყრდნობა რამდენიმე დიზაინის შაბლონს, რომლებიც შეესაბამება მის მოდულების სისტემას, ასინქრონულ მოდელს და streaming I/O-ს. ყველაზე გავრცელებული, რომლებიც ყველა backend დეველოპერმა უნდა იცნობდეს:
Node.js ეყრდნობა რამდენიმე დიზაინის შაბლონს, რომლებიც შეესაბამება მის მოდულების სისტემას, ასინქრონულ მოდელს და streaming I/O-ს. ყველაზე გავრცელებული, რომლებიც ყველა backend დეველოპერმა უნდა იცნობდეს:
module.exports / export-ის მეშვეობით, შიდა ნაწილებს კი პრივატულად ინახავთ. Node-ში კოდის ორგანიზების საფუძველი.// db.js — ყოველი `require("./db")` იღებს ამავე pool-ს (singleton module cache-ის მეშვეობით).
const pool = createPool(process.env.DATABASE_URL);
module.exports = pool;
function createLogger(kind) {
return kind === "json" ? new JsonLogger() : new TextLogger();
}
EventEmitter, stream-ები და core მოდულების უმეტესობა იყენებს მას.const { EventEmitter } = require("node:events");
const bus = new EventEmitter();
bus.on("order:paid", (o) => sendReceipt(o));
bus.emit("order:paid", order);
(ctx, next)-ს, პოპულარიზებული Express/Koa-ს მიერ. შესანიშნავია განივი საკითხებისთვის (auth, logging, ვალიდაცია).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"));
| საჭიროება | შაბლონი |
|---|---|
| ერთი გაზიარებული რესურსი | Singleton (module cache) |
ობიექტების აგება, new-ის დამალვა | Factory |
| ასინქრონულ event-ებზე რეაგირება | Observer / EventEmitter |
| განივი request ლოგიკა | Middleware |
| დიდი მონაცემების უსაფრთხოდ დამუშავება | Streams / pipeline |
| testable, decoupled დამოკიდებულებები | Dependency Injection |
შაბლონები არის საერთო ლექსიკა: თქმა „კონფიგი არის module-cache-ირებული singleton“ ან „auth არის middleware“ ორიოდე სიტყვით გადმოსცემს დიზაინს. Node-ის საკუთარი core (EventEmitter, stream-ები, მოდულების სისტემა) სწორედ ამათგან არის აგებული, ამიტომ მათი ამოცნობა გეხმარებათ ფრეიმვორკების წაკითხვასა და საკუთარი სერვისების სტრუქტურირებაში. ინტერვიუერები ამ კითხვას იყენებენ იმის შესამოწმებლად, რომ თქვენ არა უბრალოდ ad hoc აკავშირებთ callback-ებს, არამედ მიმართავთ იმ შაბლონს, რომელიც შეესაბამება — და იცნობთ მის კომპრომისებს, მაგალითად, რომ singleton გლობალურ მდგომარეობას უფრო ძნელად სატესტოს ხდის.
IT გასაუბრების კითხვების ბიბლიოთეკა დეტალური პასუხებით — Junior-დან Senior-მდე.
შემოწირულობა