Nest.js Hizmetini Farklı Bir Modülden Ekleme

Nest.js Hizmetini Farklı Bir Modülden Ekleme
Sizin gibi okuyucular MUO'yu desteklemeye yardımcı oluyor. Sitemizdeki bağlantıları kullanarak bir satın alma işlemi yaptığınızda ortaklık komisyonu kazanabiliriz. Devamını oku.

Farklı bir Nest.js modülünden hizmet enjekte etmek, bağımlılığın uygun şekilde eklenmesini ve modül organizasyonunu sağlamak için birkaç adım içerir. İki örnek modül kullanarak hizmetleri içe ve dışa aktarma sürecinin nasıl çalıştığını öğrenin.





MUO Günün videosu İÇERİĞE DEVAM ETMEK İÇİN KAYDIRIN

Nest.js Projesi Oluşturma

Nest.js projesi oluşturmak için cihazınızda CLI'nin yüklü olması gerekir. Bunu yapmazsanız, yüklemek için bu komutu çalıştırın:





 npm install -g @nestjs/cli 

Nest.js CLI yüklüyken yeni bir Nest.js projesi oluşturmak için bu komutu çalıştırın:





 nest new <project-name> 

”nı seçtiğiniz herhangi bir adla değiştirebilirsiniz. Yukarıdaki komutu çalıştırmak, belirtilen adda yeni bir Nest.js projesi oluşturacaktır.

Mevcut proje yapınız aşağıdaki resimdeki gibi görünmelidir:



  Nest.js standart dosya yapısı

Bir modülden farklı bir modüle hizmet enjekte etme alıştırması yapmak için modül-a ve modül-b olmak üzere iki modül oluşturacaksınız. Ayrıca bunlara karşılık gelen hizmet ve denetleyici dosyalarını da oluşturacaksınız.

Modül-a'yı oluşturmak için bu komutu çalıştırın:





playstation ağına nasıl girilir
 nest generate module module-a 

Ve modül-b için eşdeğer komutu çalıştırın:

 nest generate module module-b 

Daha sonra modül-a için hizmet ve denetleyici dosyalarını oluşturmak üzere bu komutu çalıştırın:





 nest generate service module-a && nest generate controller module-a 

Ve modül-b için eşdeğer komutu çalıştırın:

 nest generate service module-b && nest generate controller module-b 

Mevcut proje dizininiz şu şekilde görünmelidir: kaynak/modül-a Ve kaynak/modül-b dizinler:

  Oluşturulan modüller, hizmetler ve denetleyiciyle Nest.js dosya yapısı

Bir Hizmeti Modül A'dan Dışa Aktarma

Modül-a hizmetini modül-a modülünden dışa aktarmak için, bunu modül-a'nın modül dosyasında dışa aktarma olarak listelemeniz gerekir ( modül-a.module.ts ). Varsayılan olarak Nest.js CLI, ihracat dizideki @Modül dekoratör, böylece oluşturulan modül dosyası şöyle görünecektir:

 // module-a.module.ts 
import { Module } from '@nestjs/common';
import { ModuleAService } from './module-a.service';
import { ModuleAController } from './module-a.controller';

@Module({
  providers: [ModuleAService],
  controllers: [ModuleAController],
})

export class ModuleAModule {}

Servis-a yapmak için ( modül-a.service.ts ) modül-a'yı içe aktaran modüller tarafından erişilebilir, bir ihracat dizideki @Modül dekoratör ve ekle ModülHizmet ona.

tam ekranda görev çubuğundan nasıl kurtulurum

Şöyle:

 import { Module } from '@nestjs/common'; 
import { ModuleAService } from './module-a.service';
import { ModuleAController } from './module-a.controller';

@Module({
  providers: [ModuleAService],
  controllers: [ModuleAController],
  exports: [ModuleAService],
})

export class ModuleAModule {}

Daha sonra, test amacıyla modülünüze basit bir işlev ekleyin: hizmet dosyası ( modül-a.service.ts ):

 import { Injectable } from '@nestjs/common'; 

@Injectable()
export class ModuleAService {
  getHello(): string {
    return 'Hello from Module A!';
  }
}

Bu işlev örnek bir dize döndürür. Bu hizmeti doğru bir şekilde içe aktarabildiğinizi doğrulamak için, hizmet-a'yı enjekte ettikten sonra modül-b'den bu işlevi çağıracaksınız.

Bir Hizmeti Modül B'ye Aktarma

Bir modülü diğerine aktarmak için onu içe aktarma olarak listelemeniz gerekir. ithalat alıcı modülün dizisi. Bu durumda modül-a'yı eklemeniz gerekir. ithalat modül-b dizisi @Modül dekoratör.

Daha önce olduğu gibi Nest.js CLI otomatik olarak bir ithalat dizi, bu yüzden onu manuel olarak eklemelisiniz.

İlk önce ana modülü içe aktarın ( modül-a.module.ts ) alıcı modüle ( modül-b.module.ts ), oluşturun ithalat dizi ve ekle ModülAModül diziye:

 // module-b.module.ts 
import { Module } from '@nestjs/common';
import { ModuleBController } from './module-b.controller';
import { ModuleBService } from './module-b.service';
import { ModuleAModule } from '../module-a/module-a.module';

@Module({
  imports: [ModuleAModule],
  controllers: [ModuleBController],
  providers: [ModuleBService],
})

export class ModuleBModule {}

Ardından, cihazınızı açın modül-b.service.ts dosyalayın ve içe aktarın Enjekte et dekoratör ve ModülAServis itibaren @nests/ortak Ve ../modül-a/modül-a.hizmet , sırasıyla:

 import { Injectable, Inject } from '@nestjs/common'; 
import { ModuleAService } from '../module-a/module-a.service';

Enjekte et dekoratör, parametresini bağımlılık enjeksiyonu için bir hedef olarak işaretler.

Daha sonra, sizin ModülBHizmet class'a aşağıdaki kod bloğunu ekleyin:

 @Inject(ModuleAService) 
  private readonly moduleAService: ModuleAService;

Yukarıdaki kod bloğu, ModuleAService'inizde bulunan yöntemlere ModuleBService erişiminizi sağlar.

ModuleAService’i arayarak hizmeti test edebilirsiniz. Merhaba yöntem.

iphone'da eski metin mesajları nasıl alınır
 // module-b.service.ts 
import { Injectable, Inject } from '@nestjs/common';
import { ModuleAService } from 'src/module-a/module-a.service';

@Injectable()
export class ModuleBService {
  @Inject(ModuleAService)
  private readonly moduleAService: ModuleAService;

  getHello(): string {
    return this.moduleAService.getHello();
  }
}

Ardından, cihazınızı açın modül-b.controller.ts Dosyalayın ve oluşturulan kodu aşağıdaki kod bloğuyla değiştirin:

 // module-b.controller.ts 
import { Controller, Get } from '@nestjs/common';
import { ModuleBService } from './module-b.service';

@Controller('module-b')
export class ModuleBController {
  constructor(private readonly moduleBService: ModuleBService) {}

  @Get('/hello')
  getHello(): string {
    return this.moduleBService.getHello();
  }
}

Yukarıdaki kod bloğu bir ELDE ETMEK için rota işleyicisi Merhaba işlev.

Nihayet, curl ile GET isteği yap localhost'a: 3000/module-b/hello. Komutun “Modül A'dan Merhaba!” yazması gerekir. konsolunuza.

Başka bir modüle başarıyla bir hizmet enjekte ettiniz. Bu, şu durumlarda işinize yarayabilir: Nest.js ile API'ler oluşturma birbirlerinin yöntemlerini çağırması gereken birden fazla modüle sahip.

Çapraz Modül Enjeksiyonunun Faydaları

Doğrudan başka bir modülden hizmet çağırmak ilk başta daha basit görünse de uzun vadede daha karmaşık, bakımı daha az ve daha az ölçeklenebilir bir sisteme yol açabilir.

Bununla birlikte, çapraz modül enjeksiyonu, kod modülerliğini ve yeniden kullanılabilirliğini destekleyerek bakımı kolaylaştırır. Ayrıca bağımlılıkları merkezileştirir, test edilebilirliği artırır ve ölçeklenebilir, ayrıştırılmış bir mimariyi destekler.