NestJS — Node.js للمؤسسات

منصة HTTP: Express و Fastify ومحول HTTP

18 دقيقة الدرس 55 من 80

منصة HTTP: Express و Fastify ومحول HTTP

يجرد NestJS منصة HTTP مع إتاحة اختيار الخادم الأساسي. Express هو الافتراضي ويمتلك أوسع منظومة وسيطات؛ أما Fastify فقد يوفر إنتاجية أعلى عندما يناسب نموذج إضافاته تطبيقك.

الفكرة الأساسية

تدور هذه الميزة حول التحكم في كيفية تنظيم التطبيق وسلوكه وقت التشغيل. النقاط التالية هي ما يجب أن يعرفه المطور قبل استخدامها في مشروع حقيقي:

  • محول HTTP هو الجسر بين NestJS وإطار الخادم الأساسي.
  • تعمل وسيطات Express عادة عبر app.use()، بينما يفضل Fastify تسجيل الإضافات.
  • احقن HttpAdapterHost عندما يحتاج كود البنية التحتية وصولاً آمناً إلى نسخة المنصة.
  • لا تخلط معالجة الاستجابة الخاصة بـ Express مع كود مستقل عن الإطار إلا إذا قبلت تكلفة فقدان قابلية النقل.
  • يتطلب Fastify إضافات متوافقة معه للكوكيز وCORS ورفع الملفات والضغط.

مثال عملي

يوضح المثال التالي الشكل العملي للفكرة داخل مشروع NestJS. ليست الغاية حفظ الكود، بل فهم مكانه في المعمارية:

async function bootstrap() { const app = await NestFactory.create<NestFastifyApplication>( AppModule, new FastifyAdapter({ logger: true }), ); await app.register(fastifyCookie); await app.listen({ port: 3000, host: '0.0.0.0' }); }
ملاحظة تصميمية: اختر المنصة مبكراً. يمكنك الترحيل لاحقاً، لكن الاستخدام المباشر لـ @Res() أو وسيطات Express أو إضافات خاصة بالمنصة يخلق عملاً أثناء الانتقال.

قائمة تطبيق إنتاجية

  • استخدم قيم إرجاع مستقلة عن الإطار من المتحكمات قدر الإمكان.
  • ركّز إعدادات المحول الخاصة في main.ts أو وحدات البنية التحتية.
  • تحقق من دعم الوسيطات الخارجية للمنصة المختارة.
  • اختبر الحمل قبل تغيير المنصة لأسباب أداء نظرية فقط.
قاعدة عملية: إذا جعلت الميزة الحدود أوضح والاختبارات أسهل فهي اختيار جيد. إذا أخفت التبعيات أو صعّبت التتبع، فأعد التصميم.

الخلاصة

يغطي هذا الدرس جزءاً متقدماً من NestJS يجب فهمه عند بناء تطبيقات مؤسسية. ركّز على الحدود الواضحة، والسلوك القابل للاختبار، واختيار الأداة المناسبة للسياق بدلاً من استخدام كل ميزة في كل مكان.