Nest.js應(yīng)用程序的組成
- Modules
- Controllers
- Providers
- Services
- Pipes
- Guards
- Interceptors
- ...
一個(gè)Module底下包含一個(gè)或多個(gè)Controllers或Providers。
nest.js里是用Module來(lái)建構(gòu)應(yīng)用程式架構(gòu),任何nest.js的應(yīng)用程式一定至少要有一個(gè)Root Module胎挎,在CLI產(chǎn)生的程式碼里為ApplicationModule,透過nest.js提供的Factory Method建立應(yīng)用程式的實(shí)例(Instance)從main.ts程式碼中可以看到
import { NestFactory } from '@nestjs/core';
import { ApplicationModule } from './app.module';
async function bootstrap() {
//NestFactory.create工廠方法載入Root Module三娩,該方法回傳nest應(yīng)用程式物件(實(shí)作INestApplication介面)
const app = await NestFactory.create(ApplicationModule);
await app.listen(3000);
}
//啟動(dòng)nest應(yīng)用程式
bootstrap();
依據(jù)功能(Feature)需求建立其他Module,例如User Module用來(lái)處理使用者資料妹懒、Auth Module處理使用者驗(yàn)證等雀监。
Module通常是一個(gè)Class并宣告@Module Decorator,指定哪些Controller及Provider在這個(gè)Module使用眨唬,通常通一個(gè)Controller及Provider不能指定給多個(gè)Module会前。
//app.module.ts
import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
@Module({
imports: [],
controllers: [AppController],
providers: [AppService],
})
export class AppModule {}