1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Nest.jsのModuleとは

Posted at

はじめに

Nest.jsを触る機会があるものの基礎を理解せず触っていたため、よくわかっていない部分を再確認していきます。今回はModuleについて。

Moduleとは

関連する機能をグループ化し、アプリケーションの構造を整理するための単位。

各アプリケーションには少なくとも1つのルートモジュールがあり、依存関係の解決の開始点となる。一般的には、複数のモジュールを使用して機能を整理・呼び出す。

定義方法

@Module()を使って定義する。@Module()は1つのオブジェクト(モジュールの設定を記述したプロパティを持っている)を受け取る。

  • providers: Nest injector によってインスタンス化され、Module 内で共有される
  • controllers: Module で定義された Controller
  • imports: Module で使用する Provider をエクスポートしている他の Module
  • exports: Module 内で定義された Provider を他の Module で利用できるようにするための設定

種類

モジュールにはいくつかの種類があるのでまとめていく。

機能モジュール

特定の機能やドメインに関連するコードをグループ化したモジュール。

import { Module } from '@nestjs/common';
import { CatsController } from './cats.controller';
import { CatsService } from './cats.service';

@Module({
  controllers: [CatsController],
  providers: [CatsService],
})
export class CatsModule {}

共有モジュール

アプリケーション全体で共有される共通のプロバイダーやサービスを含むモジュール。

import { Module } from '@nestjs/common';
import { CatsController } from './cats.controller';
import { CatsService } from './cats.service';

@Module({
  controllers: [CatsController],
  providers: [CatsService],
  exports: [CatsService] // CatsModuleをimportするとCatsServiceを使えるようになる
})
export class CatsModule {}

グローバルモジュール

アプリケーション全体で自動的に利用可能になるモジュール。

app.module.ts等、1度だけ登録すればimportしなくてもグローバルモジュールのプロバイダにアクセスできる。

import { Module, Global } from '@nestjs/common';
import { CatsController } from './cats.controller';
import { CatsService } from './cats.service';

@Global() // これをつけるとグローバルモジュールになる
@Module({
  controllers: [CatsController],
  providers: [CatsService],
  exports: [CatsService], // CatsServiceがimportしなくてもアクセスできるようになる
})
export class CatsModule {}

参考

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?