[TIL]NestJS勉強5日目
3683 ワード
Module
モジュールの基本的な説明
モジュールは、
@Module
データレコーダを使用して、Nest組織アプリケーションの構造にメタデータを提供します.各アプリケーションには少なくとも1つのモジュールがあります.
モジュールパラメータ
≪プロバイダ|Provider|emdw≫:最近のインジェクタによってインスタンス化され、インスタンスはモジュールで最も共有されません.
≪コントローラ|Controller|emdw≫:モジュールで定義されたインスタンス化が必要なコントローラのセット.
imports:インポートされたモジュールのリスト.このリストのモジュールは、デザイナに使用されているモジュールから必要なプロバイダをエクスポートする必要があります.
exports:プロバイダのサブセットで、データレコーダを使用するモジュールが提供するプロバイダの一部をエクスポートできます.これは、他のモジュールからインポートするときに使用されます.
モジュールタイプ
Feature Module
特定の単位のモジュールとしても解釈され、
feature module
は、特定の特徴に関連するコードを単純に整理する.したがって,コードは組織的であり,明確な境界を確立することによって複雑さを低減する.import { Module } from '@nestjs/common';
import { CatsController } from './cats.controller';
import { CatsService } from './cats.service';
@Module({
controllers: [CatsController],
providers: [CatsService],
})
export class CatsModule {}
上記コードを記述するためには、terminal
にnest g module cats
を記述するだけでよい.app.module
は、importによってモジュールを利用可能に変換する.Shared Module
1つのモジュールしかないので、任意の
Provider
インスタンスまたは複数のモジュールで共有することができる.import {Module} from "@nestjs/common";
import {CatsController} from "./cats.controller";
import {CatsService} from "./cats.service";
@Module({
controllers: [CatsController],
providers: [CatsService],
exports: [CatsService]
})
export class CatsModule {}
名前の通り、共有はこの目的を達成するために行われるので、このモジュールを共有することで、CatsService
をどこでも使用できます.Global Module
@Global
データレコーダ定義を使用すると、グローバルモジュールはどこでも使用できます.import { Module, Global } from '@nestjs/common';
import { CatsController } from './cats.controller';
import { CatsService } from './cats.service';
@Global()
@Module({
controllers: [CatsController],
providers: [CatsService],
exports: [CatsService],
})
export class CatsModule {}
このように、CatsModule
を使用すれば、どこでもCatsService
を使用することができる.Dynamic Module
動的モジュールは、
providers
を動的に設定および登録できるカスタマイズ可能なモジュールを作成することができる.import {Module, DynamicModule} from "@nestjs/common";
import {createDatabaseProviders} from "./database.providers";
import {Connection} from "./connection.provider";
@Module({
providers: [Connection]
})
export class DatabaseModule {
static forRoot(entities = [], options?): DynamicModule {
const providers = createDatabaseProviders(options, entities);
return {
module: DatabaseModule,
providers,
exports: providers
}
}
}
上のコードを見て、このように値を動的に変更することができます.しかしこの場合、価格はoverride
ではなく、extend
である.つまり、いくつかの値が増加します.モジュール付加機能
Module re-exporting
@Module({
imports: [CommonModule],
exports: [CommonModule],
})
export class CoreModule {}
上記の例に示すように、モジュールのインポート後に再エクスポートできます.注入依存
import { Module } from '@nestjs/common';
import { CatsController } from './cats.controller';
import { CatsService } from './cats.service';
@Module({
controllers: [CatsController],
providers: [CatsService],
})
export class CatsModule {
constructor(private catsService: CatsService) {}
}
ジェネレータを作成できます.Reference
この問題について([TIL]NestJS勉強5日目), 我々は、より多くの情報をここで見つけました https://velog.io/@ingyocode/TIL-NestJS-공부-5일차テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol