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 端口进行监听。