يعتمد Node.js على حفنة من أنماط التصميم التي تلائم نظام الوحدات (module system)، ونموذجه غير المتزامن، والإدخال/الإخراج التدفقي. أكثرها شيوعًا والتي ينبغي على كل مطوّر backend التعرّف عليها:
يعتمد Node.js على حفنة من أنماط التصميم التي تلائم نظام الوحدات (module system)، ونموذجه غير المتزامن، والإدخال/الإخراج التدفقي. أكثرها شيوعًا والتي ينبغي على كل مطوّر backend التعرّف عليها:
module.exports / export، مع إبقاء التفاصيل الداخلية خاصة. إنه أساس تنظيم الشيفرة في Node.// db.js — كل `require("./db")` يحصل على نفس الـ pool (singleton عبر ذاكرة الوحدة المؤقتة).
const pool = createPool(process.env.DATABASE_URL);
module.exports = pool;
function createLogger(kind) {
return kind === "json" ? new JsonLogger() : new TextLogger();
}
EventEmitter وstreams ومعظم الوحدات الأساسية.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. رائعة للاهتمامات الشاملة (المصادقة، التسجيل، التحقق).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 |
| التفاعل مع أحداث غير متزامنة | Observer / EventEmitter |
| منطق طلب شامل | Middleware |
| معالجة بيانات كبيرة بأمان | Streams / pipeline |
| تبعيات قابلة للاختبار ومفكّكة | Dependency Injection |
الأنماط هي مفردات مشتركة: قول «الـ config هو singleton مُخزَّن على مستوى الوحدة» أو «المصادقة هي middleware» يوصّل تصميمًا في كلمات قليلة. إن نواة Node نفسها (EventEmitter، streams، نظام الوحدات) مبنية من هذه الأنماط، لذا فإن التعرّف عليها يساعدك على قراءة الأطر (frameworks) وهيكلة خدماتك. يستخدم المحاورون هذا السؤال للتحقق من أنك لا تربط الـ callbacks بشكل عشوائي فحسب، بل تلجأ إلى النمط المناسب — وتعرف مقايضاته، مثل جعل singleton الحالةَ العامة أصعب في الاختبار.
مكتبة من أسئلة مقابلات تقنية المعلومات مع إجابات مفصّلة — من المبتدئ إلى المتقدم.
تبرع