import { NestFactory } from '@nestjs/core';import {FastifyAdapter,NestFastifyApplication,
} from '@nestjs/platform-fastify';import { AppModule } from './app.module';async function bootstrap() {// 使用fastify驱动const app = await NestFactory.create<NestFastifyApplication>(AppModule,new FastifyAdapter(),{// 启用跨域访问cors: true,// 只使用error和warn这两种输出,避免在控制台冗余输出logger: ['error', 'warn'],},);// 设置全局访问前缀app.setGlobalPrefix('api');// 启动后的输出await app.listen(3100, () => {console.log('api: http://localhost:3100');});
}
bootstrap();
这段代码是使用NestJS框架编写的一个简单的服务器启动脚本。NestJS 是一个用于构建高效,可扩展的 Node.js 服务器端应用程序的框架。它使用渐进式 JavaScript,内置 TypeScript(保留了与纯 JavaScript 的兼容性),并结合了 OOP(面向对象编程),FP(函数式编程)和 FRP(函数响应式编程)的元素。
下面是具体的代码解读:
-
引入依赖
NestFactory
:NestFactory 是 Nest 的核心部分,用于创建应用实例。FastifyAdapter
和NestFastifyApplication
:这两个来自 ‘@nestjs/platform-fastify’ 的对象是为了让 NestJS 使用 Fastify 作为 HTTP 服务器,而非默认的 Express。AppModule
:这是应用的根模块。
-
定义 bootstrap 异步函数
- 在这个函数中,我们使用
NestFactory.create()
方法创建一个 NestJS 应用。我们指定了类型为NestFastifyApplication
(这意味着我们将使用 Fastify 而不是 Express 作为 HTTP 框架),并传递了AppModule
和new FastifyAdapter()
(用于使用 Fastify)。 - 对象
{ cors: true, logger: ['error', 'warn'] }
是创建应用时的配置项,其中cors: true
启用了跨域资源共享,logger: ['error', 'warn']
限制了 logger 只显示错误和警告信息,避免冗余输出。
- 在这个函数中,我们使用
-
设置全局路由前缀
app.setGlobalPrefix('api')
:这将 ‘api’ 设置为所有路由的全局前缀。例如,如果你有一个路由/users
,那么实际的访问 URL 将是/api/users
。
-
监听端口并启动应用
await app.listen(3100, ...)
:这将启动 Fastify 服务器,并在端口 3100 上监听输入的 HTTP 请求。当服务器成功启动后,会在控制台打印 ‘api: http://localhost:3100’。
-
最后,调用
bootstrap()
函数启动服务器。
这段代码的主要目的是启动一个 NestJS 服务器,并且使用 Fastify 作为其底层的 HTTP 服务框架。它还启用了 CORS,并限制了 logger 的输出级别。所有的路由都将以 ‘/api’ 作为前缀,服务器将在本地的 3100 端口进行监听。