Nest.js应用程序的组成
- Modules
- Controllers
- Providers
- Services
- Pipes
- Guards
- Interceptors
- ...
一个Module底下包含一个或多个Controllers或Providers。
nest.js里是用Module来建构应用程式架构,任何nest.js的应用程式一定至少要有一个Root Module,在CLI产生的程式码里为ApplicationModule,透过nest.js提供的Factory Method建立应用程式的实例(Instance)从main.ts程式码中可以看到
import { NestFactory } from '@nestjs/core';
import { ApplicationModule } from './app.module';
async function bootstrap() {
//NestFactory.create工厂方法载入Root Module,该方法回传nest应用程式物件(实作INestApplication介面)
const app = await NestFactory.create(ApplicationModule);
await app.listen(3000);
}
//启动nest应用程式
bootstrap();
依据功能(Feature)需求建立其他Module,例如User Module用来处理使用者资料、Auth Module处理使用者验证等。
Module通常是一个Class并宣告@Module Decorator,指定哪些Controller及Provider在这个Module使用,通常通一个Controller及Provider不能指定给多个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 {}