NestJS Modules : Create Module In NestJs In Hindi


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 हो।

NestJS Define Module

Modules को define करना काफी simple होता है। एक module basically एक class होती है जिसे @Module() decorator के साथ define किया जाता है।

NestJS Module Example

import { Module } from '@nestjs/common'; import { AppController } from './app.controller'; import { AppService } from './app.service'; @Module({ imports: [], controllers: [AppController], providers: [AppService], }) export class AppModule {}
Explanation
  • @Module() decorator : यह decorator NestJS को बताता है कि यह class एक module है।

  • controllers[] : इसमें हम सारे controllers को define करते हैं जो इस module के लिए responsible हैं।

  • providers[] : यह array उन services या providers को define करता है जो module में use होंगे।

  • imports[] : अगर किसी module को दुसरे module कि need हो, तो हम उन्हें यहां import कर सकते हैं।

NestJS Root Module & Feature Modules

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 {}
NestJS Feature Modules 

यह वो modules होते हैं जो application के अलग-अलग features या functionalities को encapsulate करते हैं।

For example, अगर आपका application users और products handle करता है, तो आप UserModule और ProductModule बना सकते हैं।

जहाँ -

  • UserModule : यह users से related सारी functionality को handle करेगा ।

  • ProductModule : यह products से related functionality को encapsulate करेगा ।

NestJS Dynamic Modules

Dynamic modules वो होते हैं जो runtime पर कुछ dependencies inject करते हैं या कुछ runtime configurations allow करते हैं। यह तब useful होते हैं जब आपको अपने module को dynamically configure करना हो।

NestJS Dynamic Module example

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 करने कि सुविधा देता है।

NestJS Module Structure

अब चलिए देखते हैं एक 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
│
1. app.module.ts (Root 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 {}
2. user.module.ts (User Feature Module)

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 {}
3. user.controller.ts (User Controller)

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(); } }
4. user.service.ts (User Service)

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 बनेगा।

NestJS Modules Best Practices

  • 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 के लिए।

Conclusion

NestJS modules आपके application को structured और scalable बनाते हैं। यह एक तरह का "building block" हैं जिनके बिना आपका application organize नहीं हो पायेगा।

हर module अपने responsibilities को manage करता है और application के अलग-अलग features को handle करता है।

Key Points
  • NestJS modules application को logical parts में divide करते हैं।

  • Root module से application bootstrap होता है।

  • Feature modules application के अलग-अलग functionalities को manage करते हैं।

  • Modules को import/export करके हम dependencies को manage करते हैं।

Hey ! I'm Rahul founder of learnhindituts.com. Working in IT industry more than 4.5 years. I love to talk about programming as well as writing technical tutorials and blogs that can help to others .... keep learning :)

Get connected with me - LinkedIn Twitter Instagram Facebook