If tutorials available on this website are helpful for you, please whitelist this website in your ad blocker😭 or Donate to help us ❤️ pay for the web hosting to keep the website running.
NestJS में module एक logical unit होता है जो application के components को encapsulate
करता है। यह controllers, services, और providers को एक साथ organize करता है।
हर module independent होता है, और application के अलग-अलग features को handle करता है।
in simple terms, modules आपके application के parts को group करते हैं ताकि हर part अपने आप में complete हो और application को maintain करना easy हो।
●●●
Modules को define करना काफी simple होता है। एक module basically एक class होती है जिसे @Module()
decorator के साथ define किया जाता है।
import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
@Module({
imports: [],
controllers: [AppController],
providers: [AppService],
})
export class AppModule {}
@Module() decorator : यह decorator NestJS को बताता है कि यह class एक module है।
controllers[] : इसमें हम सारे controllers को define करते हैं जो इस module के लिए responsible हैं।
providers[] : यह array उन services या providers को define करता है जो module में use होंगे।
imports[] : अगर किसी module को दुसरे module कि need हो, तो हम उन्हें यहां import कर सकते हैं।
●●●
NestJS applications में एक root module होता है जो application का entry point होता है। यह module AppModule
के नाम से जाना जाता है, और आपके पूरे application को bootstrap
करता है।
import { Module } from '@nestjs/common';
import { UserModule } from './user/user.module';
@Module({
imports: [UserModule], // Root module mein feature module import kiya
})
export class AppModule {}
यह वो modules होते हैं जो application के अलग-अलग features या functionalities को encapsulate करते हैं।
For example, अगर आपका application users और products handle करता है, तो आप UserModule
और ProductModule
बना सकते हैं।
जहाँ -
UserModule : यह users से related सारी functionality को handle करेगा ।
ProductModule : यह products से related functionality को encapsulate करेगा ।
●●●
Dynamic modules वो होते हैं जो runtime पर कुछ dependencies
inject करते हैं या कुछ runtime configurations allow करते हैं। यह तब useful होते हैं जब आपको अपने module को dynamically configure करना हो।
import { Module, DynamicModule } from '@nestjs/common';
@Module({})
export class DynamicConfigModule {
static register(options: ConfigOptions): DynamicModule {
return {
module: DynamicConfigModule,
providers: [
{
provide: 'CONFIG_OPTIONS',
useValue: options,
},
],
};
}
}
इस case में, register()
method हमें module को dynamic options के साथ configure करने कि सुविधा देता है।
●●●
अब चलिए देखते हैं एक project structure का example, जिसमे हम modules को organize करेंगे। Suppose , हम एक simple application बना रहे हैं जिसमे User
और Product
से related modules हैं।
src/ │ ├── app.module.ts # Root module │ ├── user/ # User Module Folder │ ├── user.controller.ts # User Controller │ ├── user.service.ts # User Service │ ├── user.module.ts # User Module │ ├── product/ # Product Module Folder │ ├── product.controller.ts # Product Controller │ ├── product.service.ts # Product Service │ ├── product.module.ts # Product Module │
Location : src/app.module.ts
import { Module } from '@nestjs/common';
import { UserModule } from './user/user.module';
import { ProductModule } from './product/product.module';
@Module({
imports: [UserModule, ProductModule], // Root module mein feature modules ko import karte hain
})
export class AppModule {}
Location : src/user/user.module.ts
import { Module } from '@nestjs/common';
import { UserController } from './user.controller';
import { UserService } from './user.service';
@Module({
controllers: [UserController],
providers: [UserService],
})
export class UserModule {}
Location : src/user/user.controller.ts
import { Controller, Get } from '@nestjs/common';
import { UserService } from './user.service';
@Controller('users')
export class UserController {
constructor(private readonly userService: UserService) {}
@Get()
findAll() {
return this.userService.findAll();
}
}
Location : src/user/user.service.ts
import { Injectable } from '@nestjs/common';
@Injectable()
export class UserService {
findAll() {
return ['John Doe', 'Jane Doe'];
}
}
ठीक इसी तरह से Product
module के module , controller और service का setup होगा।
यह structure simple है, लेकिन आपके application के grow करते ही, modules को इस तरह से organize करने से आपका project काफी modular और maintainable बनेगा।
●●●
Divide and Conquer : हर feature या functionality को अपने module में encapsulate करें, जैसे UserModule, ProductModule, etc.
Modularity Maintain करें : हर module को अपने logical responsibility तक ही limited रखें। इससे code reuse और maintain करना easy होता है।
Shared Modules का Use करें : अगर आपको कोई service या provider multiple modules में use करना हो, तो उससे एक shared module में डाल कर import करें।
Avoid Circular Dependencies : NestJS आपको circular dependencies detect करने में help करेगा। फिर भी, आप हमेशा ensure करें कि dependencies circular न हूँ।
Dynamic Modules को समझें : Dynamic modules तब useful होते हैं जब आपको module को runtime पर customize करना हो, जैसे configurations या database connections के लिए।
●●●
NestJS modules आपके application को structured और scalable बनाते हैं। यह एक तरह का "building block
" हैं जिनके बिना आपका application organize नहीं हो पायेगा।
हर module अपने responsibilities को manage करता है और application के अलग-अलग features को handle करता है।
NestJS modules application को logical parts में divide करते हैं।
Root module से application bootstrap होता है।
Feature modules application के अलग-अलग functionalities को manage करते हैं।
Modules को import/export करके हम dependencies को manage करते हैं।