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

MVC وتقديم الملفات الساكنة و Router Module

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

MVC وتقديم الملفات الساكنة و Router Module

يستطيع NestJS تقديم أكثر من واجهات JSON. يمكنه عرض قوالب على الخادم، وتقديم ملفات ساكنة عامة، وتنظيم أشجار مسارات معقدة عبر RouterModule. تفيد هذه الميزات للوحات الإدارة وبوابات التوثيق والتطبيقات الكاملة الصغيرة.

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

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

  • يضبط نمط MVC مجلد العروض ومحرك القوالب ثم يعيد قوالب معروضة من المتحكمات.
  • تعرض ServeStaticModule أصول الواجهة المبنية أو الملفات العامة دون كتابة متحكمات مخصصة.
  • تجمع RouterModule.register() الوحدات تحت بادئات مسارات دون ترميز البادئات في كل متحكم.
  • ينبغي تخزين الأصول الساكنة بقوة غالباً، بينما تحتاج الصفحات المعروضة قواعد تخزين خاصة بالتطبيق.
  • لواجهات SPA الكبيرة قد تكون CDN أو منصة استضافة واجهة أفضل من تقديم كل الأصول عبر Nest.

مثال عملي

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

@Module({ imports: [ ServeStaticModule.forRoot({ rootPath: join(__dirname, '..', 'public'), serveRoot: '/assets', }), RouterModule.register([ { path: 'admin', module: AdminModule }, { path: 'api/v1', module: ApiModule }, ]), ], }) export class AppModule {}
ملاحظة تصميمية: تجعل هذه الميزات Nest مناسباً لواجهات داخلية كاملة، لكن حافظ على وضوح المسؤوليات: وحدات API والصفحات المعروضة والأصول الساكنة يجب ألا تتحول إلى وحدة متشابكة واحدة.

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

  • افصل متحكمات العرض عن متحكمات API.
  • قدّم الأصول ذات البصمة مع أعمار تخزين طويلة.
  • استخدم RouterModule لأشجار المسارات الكبيرة والسياقات المحددة.
  • انقل الأصول العامة الثقيلة إلى CDN عند نمو الحركة.
قاعدة عملية: إذا جعلت الميزة الحدود أوضح والاختبارات أسهل فهي اختيار جيد. إذا أخفت التبعيات أو صعّبت التتبع، فأعد التصميم.

الخلاصة

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