Bir NestJS modülü @Module() dekoratörü (
decorator) ile işaretlenmiş bir sınıftır. Bu dekoratör ile Nest, uygulama yapısını organize etmek için kullanacağı metadata'ya erişim sağlamış olur.
Her NestJS uygulaması 'root module' ile başlar. Bu başlangıç noktasından hareketle diğer modüller arasındaki ilişkiler belirlenir. Uygulamamızın bileşenlerini organize etmek için modülleri kullanmak oldukça kullanışlı ancak çok küçük uygulamalar için sadece root modül de kullanılabilir. @Module() dekoratörünün parametre olarak aldığı objenin alanlarını (property) inceleyelim:
providers: Nest'in dependency injector'ı tarafından bu arraydeki sınıflardan birer obje ilklendirilerek modül içinde erişime açılır.
controllers: Modül içinde yer alan controller'lar bu array içinde yer almalıdır.
imports: Import edilecek olamn modüller bu array içinde yer alır.
exports: Diğer modüller tarafından kullanılacak provider'lar bu liste içinde export edilmelidir.
A modülü içinde, B modülü içinde yer alan bir provider'ın kullanılabilmesi için:
- B modülü A modülünün import array'inde yer almalı
- İlgili provider B modülünün hem providers hem de exports array'inde yer almalı