はじめに
NestJSの各概念を少しづつ説明していきます。
一から学びたい人はまずこちらから
modules
- 形式的には、@Module() デコレータを適用したクラスのこと。以下の要素から構成される
- providers: Nest injector によりインスタンス化される Provider で、Module 内でシェアされる
- controllers: Module で定義される Controller
- imports: Module で使用する Provider をエクスポートしている他の Module
- exports: Module からエクスポートされる Provider
- Nest アプリケーションは、少なくとも一つの Module (これを Root module という) を必要とし、これと他のインポートされた Module の連鎖である application graph によって構成される
- 特定の役割に応じて一つの Module が構成されるべきである
- @Global() デコレータを適用した Module は、グローバルに利用可能となる
- 動的に使用する Provider を切り替えることも可能
Module を作成する際は以下の通り
$ nest g module <name>
このコマンドにより、src//.module.ts というファイルが作成される。
Module の基本的な構造は以下のようになります:
import { Module } from "@nestjs/common";
import { CatsController } from "./cats.controller";
import { CatsService } from "./cats.service";
@Module({
controllers: [CatsController], // Controller の登録
providers: [CatsService], // Service の登録
exports: [CatsService], // エクスポートする Provider の登録
})
export class CatsModule {}
Root module がこの Module を利用する場合は、次のようになります:
import { Module } from "@nestjs/common";
import { CatsModule } from "./cats/cats.module";
@Module({
imports: [CatsModule],
})
export class AppModule {}
modulesは@Module()デコレータが付けられたクラスです。@Module()デコレータはNestがアプリケーション構造を整理するために使用するメタデータを提供します。