NestJS Lazy loading module Example


NestJS में Lazy Loading Modules का concept तब काम आता है जब आपको अपने application का boot time improve करना हो और only needed modules को load करना हो जब उनकी need हो।

Large-scale applications में, सभी modules को एक साथ load करना efficient नहीं होता, especially जब कुछ modules सिर्फ specific routes के लिए need होते हैं।

Lazy loading आपको इस problem का solution देता है, जहाँ modules को तभी load किया जाता है जब उन्हें actually use किया जाता है।

इस topic में हम समझेंगे कि Lazy Loading Modules क्या होते हैं, कैसे इन्हे implement किया जाता है, और कैसे यह आपके NestJS applications के performance को optimize करते हैं।

What is Lazy Loading ?

Lazy loading का concept यह कहता है कि आप modules को तभी load करें जब उनकी need हो, instead of उन्हें application के start hone पर load करना।

यह approach application का initial load time reduce करता है, क्योंकि सिर्फ वही modules load होते हैं जो immediately needed होते हैं। बाकी modules जब उनकी need होती है तभी dynamically load होते हैं।

NestJS में, lazy loading को mainly modules के साथ implement किया जाता है, जिसमे आप specific routes के लिए modules को lazy load करते हैं।

जैसे अगर आपका application large-scale है, और कुछ features सिर्फ admin section के लिए हैं, तो आप उन्हें lazy load कर सकते हैं जब admin user login करे।

Lazy Loading Structure In NestJs

NestJS में lazy loading को implement करने के लिए आपको dynamic module imports का use करना पड़ता है। यह forRoutes() method के साथ किया जाता है, जो specific routes के लिए modules को load करता है।

{ path: 'admin', module: AdminModule, // This model will load lazily when the 'admin' route is hit. }

यहां , AdminModule को सिर्फ तब load किया जाएगा जब कोई user admin route को hit करेगा।

Create Lazy Loading Module In NestJs

चलिए एक practical example बनाते हैं जिसमे हम एक AdminModule को lazily load करते हैं, जो सिर्फ admin users के लिए accessible होगा।

Step 1 : Create Module

पहले एक admin module बनाते हैं जो admin-related functionality को handle करेगा।

File : src/admin/admin.module.ts

import { Module } from '@nestjs/common'; import { AdminController } from './admin.controller'; @Module({ controllers: [AdminController], }) export class AdminModule {}
Step 2 : Create Controller

File : src/admin/admin.controller.ts

import { Controller, Get } from '@nestjs/common'; @Controller('admin') export class AdminController { @Get() getAdminDashboard() { return 'Welcome to Admin Dashboard!'; } }

यहां AdminController में एक simple getAdminDashboard() method है जो admin route को handle करेगा।

Step 3 : Set Up Lazy Loading In Module

अब हम AppModule में admin module को lazily load करेंगे जब admin route को access किया जाएगा।

File : src/app.module.ts

import { Module } from '@nestjs/common'; import { RouterModule } from '@nestjs/core'; @Module({ imports: [ RouterModule.register([ { path: 'admin', loadChildren: () => import('./admin/admin.module').then(m => m.AdminModule), // Lazy loading }, ]), ], }) export class AppModule {}

इस code में -

  • RouterModule.register() का use किया गया है तो dynamically load AdminModule.

  • loadChildren property ensure करती है कि AdminModule सिर्फ तब load होगा जब कोई user admin route को access करेगा।

NestJs Route-Specific Lazy Loading

NestJS में lazy loading को route-specific implement करना काफी आसान है। आप specific routes के लिए modules को lazily load कर सकते हैं। यह approach तब काफी useful होता है जब आपके application में कुछ modules सिर्फ specific routes के लिए need होते हैं।

Example

अगर आपका application में एक user profile section और एक admin dashboard section है, तो आप इन दोनो को lazily load कर सकते हैं -

RouterModule.register([ { path: 'profile', loadChildren: () => import('./profile/profile.module').then(m => m.ProfileModule), }, { path: 'admin', loadChildren: () => import('./admin/admin.module').then(m => m.AdminModule), }, ]);

यहां

  • ProfileModule सिर्फ तब load होगा जब कोई user profile route को access करेगा।

  • AdminModule तभी load होगा जब admin route को hit किया जाएगा।

NestJs Lazy Loading Module Best Practices

  • Lazy Load Only When Necessary : Lazy loading का use तभी करें जब module का immediate use नहीं है। Overuse से unnecessary complexity बढ़ सकती है।

  • Optimize Large Modules : जो modules काफी heavy हैं (जैसे admin dashboard, analytics, reports), उन्हें lazily load करना best practice है। इससे आपका initial application load fast होगा।

  • Keep Modules Self-Contained : Lazy loaded modules को self-contained बनाएं, जिसमे sari dependencies module के अंदर ही हूँ। इससे modularity और maintainability बढ़ती है।

  • Monitor Performance : Lazy loading से performance improve होता है, लेकिन हमेशा यह ensure करें कि आपका lazy loading logic सही से काम कर रहा हो और कोई overhead create न कर रहा हो।

Conclusion

Lazy Loading Modules NestJS में एक powerful technique है जो आपको application का load time optimize करने कि facility देती है। यह technique आपको सिर्फ तभी modules load करने देती है जब उनकी need हो, जिससे application का initial load time और memory consumption कम होता है।

इस topic में हमने देखा कि कैसे lazy loading को implement किया जाता है, कैसे specific routes के लिए modules को dynamically load करते हैं, और कैसे best practices को follow करते hue application को optimize कर सकते हैं।

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