Node.js তার module system, async মডেল, এবং streaming I/O-এর সাথে মানানসই গুটিকয়েক design pattern-এর উপর নির্ভর করে। প্রতিটি backend ডেভেলপারের যেগুলো চেনা উচিত সেই সবচেয়ে সাধারণগুলো:
Node.js তার module system, async মডেল, এবং streaming I/O-এর সাথে মানানসই গুটিকয়েক design pattern-এর উপর নির্ভর করে। প্রতিটি backend ডেভেলপারের যেগুলো চেনা উচিত সেই সবচেয়ে সাধারণগুলো:
module.exports / export-এর মাধ্যমে একটি public API উন্মুক্ত করেন, ভেতরের অংশ private রেখে। Node-এ কোড সংগঠনের ভিত্তি।// db.js — প্রতিটি `require("./db")` এই একই pool পায় (module cache-এর মাধ্যমে singleton)।
const pool = createPool(process.env.DATABASE_URL);
module.exports = pool;
function createLogger(kind) {
return kind === "json" ? new JsonLogger() : new TextLogger();
}
EventEmitter, streams, এবং বেশিরভাগ core module এটি ব্যবহার করে।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 দ্বারা জনপ্রিয়। cross-cutting বিষয়ের (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"));
| প্রয়োজন | Pattern |
|---|---|
| একটি শেয়ার্ড রিসোর্স | Singleton (module cache) |
object তৈরি, new লুকানো | Factory |
| async event-এ সাড়া দেওয়া | Observer / EventEmitter |
| Cross-cutting request লজিক | Middleware |
| বড় ডেটা নিরাপদে প্রসেস | Streams / pipeline |
| testable, decoupled নির্ভরতা | Dependency Injection |
Pattern হলো একটি শেয়ার্ড শব্দভাণ্ডার: "config হলো একটি module-cached singleton" বা "auth হলো middleware" বলা কয়েকটি শব্দে একটি ডিজাইন জানিয়ে দেয়। Node-এর নিজের core (EventEmitter, streams, module system) এগুলো থেকেই তৈরি, তাই এগুলো চেনা আপনাকে framework পড়তে এবং নিজের service সাজাতে সাহায্য করে। ইন্টারভিউয়াররা এই প্রশ্ন ব্যবহার করেন যাচাই করতে যে আপনি শুধু ad hoc ভাবে callback জোড়া দেন না, বরং মানানসই pattern-এর দিকে হাত বাড়ান — এবং এর trade-off জানেন, যেমন singleton global state-কে test করা কঠিন করে তোলে।
বিস্তারিত উত্তরসহ IT ইন্টারভিউ প্রশ্নের একটি লাইব্রেরি — জুনিয়র থেকে সিনিয়র পর্যন্ত।
দান করুন