Appearance
NestFactory
NestFactory
是 NestJS 框架中用于创建 Nest 应用实例的核心类。它提供了一组静态方法,用于引导和启动应用程序。通过 NestFactory
,你可以创建 HTTP 服务、微服务以及独立的应用实例。
主要方法
1. create:
- 创建一个 Nest 应用实例,默认使用 Express 作为底层 HTTP 服务器。
- 语法:typescript
static async create<T>(module: Type<T>, options?: NestApplicationOptions): Promise<INestApplication>;
1
2. createMicroservice:
- 创建一个微服务实例。
- 语法:typescript
static createMicroservice<T>(module: Type<T>, options: MicroserviceOptions): INestMicroservice;
1
3. createApplicationContext:
- 创建一个独立的应用上下文,通常用于测试或执行不需要完整 HTTP 服务的任务。
- 语法:typescript
static async createApplicationContext<T>(module: Type<T>, options?: NestApplicationContextOptions): Promise<INestApplicationContext>;
1
2
创建一个 HTTP 服务
通过 NestFactory.create
方法可以创建一个 HTTP 服务。下面是一个简单的示例:
typescript
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
async function bootstrap() {
const app = await NestFactory.create(AppModule);
await app.listen(3000);
console.log('Application is running on: http://localhost:3000');
}
bootstrap();
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
在这个示例中:
NestFactory.create(AppModule)
创建了一个 Nest 应用实例。app.listen(3000)
启动应用,监听 3000 端口。
创建一个微服务
通过 NestFactory.createMicroservice
方法可以创建一个微服务。下面是一个简单的示例:
typescript
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
import { Transport, MicroserviceOptions } from '@nestjs/microservices';
async function bootstrap() {
const app = await NestFactory.createMicroservice<MicroserviceOptions>(AppModule, {
transport: Transport.TCP,
});
app.listen(() => console.log('Microservice is listening'));
}
bootstrap();
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
在这个示例中:
NestFactory.createMicroservice
创建了一个 TCP 传输的微服务实例。app.listen
启动微服务。
创建一个独立的应用上下文
通过 NestFactory.createApplicationContext
方法可以创建一个独立的应用上下文,适用于运行任务或进行测试。下面是一个简单的示例:
typescript
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
async function bootstrap() {
const appContext = await NestFactory.createApplicationContext(AppModule);
const appService = appContext.get(AppService);
appService.runTask();
await appContext.close();
}
bootstrap();
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
在这个示例中:
NestFactory.createApplicationContext(AppModule)
创建了一个应用上下文实例。- 通过
appContext.get(AppService)
获取服务实例并运行任务。
常见选项
logger:
- 自定义日志记录器。
- 语法:typescript
const app = await NestFactory.create(AppModule, { logger: ['error', 'warn'], });
1
2
3
4
bodyParser:
- 配置 bodyParser 中间件选项。
- 语法:typescript
const app = await NestFactory.create(AppModule, { bodyParser: false, // 禁用 bodyParser });
1
2
3
4
总结
NestFactory
是创建和启动 NestJS 应用的核心工具。它提供了多种方法,适用于不同类型的应用程序,包括 HTTP 服务、微服务和独立的应用上下文。通过理解和使用 NestFactory
,开发者可以高效地引导和管理 NestJS 应用程序。