الوحدات بعمق
الوحدات بعمق
الوحدات هي وسيلة NestJS لتنظيم التطبيق إلى ميزات متماسكة ومكتفية ذاتيًا. قد يحوي تطبيق صغير وحدة واحدة، لكنّ التطبيقات الحقيقية شجرة من وحدات الميزات — كلٌّ تملك متحكّماتها وخدماتها وتبعياتها. إتقان الوحدات هو ما يُبقي الكود الكبير سهل التصفّح.
وحدات الميزات
تجمع وحدة الميزة كل ما يتعلّق بمجال واحد. بدل حشر المستخدمين والطلبات والمدفوعات في وحدة الجذر، تحصل كلٌّ على وحدتها:
ثم تربطها بوحدة الجذر عبر imports:
التغليف: القاعدة الأساسية
المزوّدات خاصّة بوحدتها افتراضيًا. إن أعلنت UsersModule عن UsersService في providers دون تصديرها، فلن تستطيع أي وحدة أخرى حقنها — حتى لو استوردت UsersModule.
public مقابل private في الصنف.
الوحدات المشتركة: تصدير المزوّدات
كي تسمح لوحدات أخرى باستخدام مزوّد، أضِفه إلى مصفوفة exports للوحدة:
الآن تستطيع OrdersService حقن UsersService لأنّ OrdersModule تستورد الوحدة التي تُصدّرها.
إعادة تصدير الوحدات
تستطيع الوحدة استيراد وحدة أخرى وإعادة تصديرها، فتُحزِّم قدرات مرتبطة:
الوحدات العامة
بعض المزوّدات مطلوبة في كل مكان تقريبًا — خدمة إعدادات، أو مُسجّل، أو اتصال قاعدة بيانات. وسمُ وحدة بـ @Global() يُسجّل صادراتها على مستوى التطبيق كلّه، فتستوردها مرّة واحدة (في وحدة الجذر) وتحقن مزوّداتها في أي مكان دون تكرار imports:
الخلاصة
تُنظّم الوحدات التطبيق إلى وحدات ميزات مُغلَّفة. المزوّدات خاصّة ما لم تُصدَّر؛ وتكتسب الوحدات الأخرى الوصول باستيراد الوحدة التي تُصدّرها. يُسجّل @Global() صادرات الوحدة في كل مكان — قويّ لكن يُستخدم باعتدال. تاليًا نغوص تحت الغطاء لنرى كيف يحلّ NestJS هذه التبعيات فعليًا.