NestJSモジュール(module)
2839 ワード
モジュール
NestJS公式サイトによると、モジュールは@Module()
台のコーディネーターによって注釈されたクラスである.@Module()
デコーダは、アプリケーション構造を構成するメタデータを提供する.
一般的に、モジュールは、1つの小さなクラスまたは関数のように1つのことしか実行しないソフトウェアコンポーネントではなく、複数のコンポーネントを組み合わせて作成されたより大きなタスクを実行するユニットである.すなわち、他の複数のモジュールからなるルートモジュールが存在する.写真のように、Appモジュールで、ルートモジュールの形態に向かいます.
理論的には、ルートモジュールが1つしか存在しないことは可能であるが、Nestは機能別にモジュールを分割して使用することを追求している.モジュール分割の使用理由は,複数のモジュールがそれぞれの責任を分担し,凝集力を向上させるためである.import { CatsModule } from './cats/cats.module';
import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { UsersModule } from './users/users.module';
@Module({
imports: [CatsModule, UsersModule],
controllers: [AppController],
providers: [AppService],
})
export class AppModule {}
app.module.ts
ファイル(ルートモジュール)から見ると、こんなに多くのモジュールが導入されています.では、CatsModule
およびUsersModule
出口のサービスは、AppController
またはAppService
で使用することができる.ただし、これらのモジュールはエクスポートされた状態でなければなりません.エクスポートがない場合、パッケージはモジュールのベンダー(サービス)に注入できません.
🌼 CLIによるモジュールの作成
$ nest g <schematic> <name> [options]
買収は多くのSchemicをもたらす可能性があります.(注:https://docs.nestjs.com/cli/usages)Schemicの1つはmoduleです.$ nest g module 모듈명
を生成することができる.モジュール名に制限はありませんが、公式サイトではマルチモデルなので、マルチモデルの方が良い選択(?)そうかどうか考えています.
コマンドを使用せずに1つずつ入力してモジュールを作成できますが、$ nest g module
CLIメソッドを使用してモジュールを作成すると、app.module.ts
ファイルに作成したモジュールが自動的にインポートされます.
🌼 パッケージングモジュール
モジュールは基本的にベンダーをカプセル化しています.モジュールから導出されたプロバイダは、モジュールの公開インタフェースまたはAPIと見なすことができる.(1)現在のモジュールの一部ではないか,(2)導入したモジュールにエクスポートされていない仕入先は注入できない.import { Module } from '@nestjs/common';
import { CatsController } from './cats.controller';
import { CatsService } from './cats.service';
@Module({
controllers: [CatsController],
providers: [CatsService],
exports: [],
// exports: [CatsService], 으로 변경해야 사용 가능
})
export class CatsModule {}
上のコードはcat.module.ts
ファイルのモジュールコードです.CatsService
名のサプライヤーがいますが、まだ輸出されていません.この場合、ルートモジュール(app.module.ts
)から導入されても、そのベンダーは使用できません.カプセル化されているので近づけません.モジュールを使用するためには、出口CatsService
が必要である.
Reference
この問題について(NestJSモジュール(module)), 我々は、より多くの情報をここで見つけました
https://velog.io/@bin-lee/NestJS-모듈module
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
import { CatsModule } from './cats/cats.module';
import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { UsersModule } from './users/users.module';
@Module({
imports: [CatsModule, UsersModule],
controllers: [AppController],
providers: [AppService],
})
export class AppModule {}
$ nest g <schematic> <name> [options]
import { Module } from '@nestjs/common';
import { CatsController } from './cats.controller';
import { CatsService } from './cats.service';
@Module({
controllers: [CatsController],
providers: [CatsService],
exports: [],
// exports: [CatsService], 으로 변경해야 사용 가능
})
export class CatsModule {}
Reference
この問題について(NestJSモジュール(module)), 我々は、より多くの情報をここで見つけました https://velog.io/@bin-lee/NestJS-모듈moduleテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol