Skip to main content

第一步

在这组文章中,您将了解Nest的核心基础知识。 为了熟悉Nest应用程序的基本构建块,我们将构建一个基本的CRUD应用程序,其功能涵盖介绍性的大量基础知识。

语言

我们热爱TypeScript,但最重要的是,我们热爱Node.js。这就是Nest同时兼容TypeScript和纯JavaScript的原因。 Nest利用了最新的语法特性,因此要将其用于纯JavaScript,我们需要一个Babel编译器。

我们将在提供的示例中主要使用TypeScript,但您始终可以将代码片段切换为普通JavaScript语法(只需单击每个片段右上角的语言按钮即可切换)

先决条件

请确保您的操作系统上安装了Node.js(版本>=16)

设置

使用 Nest CLI设置新项目非常简单。安装npm后,您可以再操作系统终端中使用以下命令创建一个新的Nest项目:

npm -i -g @nestjs/cli
nest new project-name
tip

如果要使用TypeScript更严格的功能集创建新项目,请使用--strict标志传递给nest new命令。

将创建project-name目录,安装节点模块和一些其它样板文件,并将创建src/目录并填充几个核心文件。

src
|--app.controller.spec.ts
|--app.controller.ts
|--app.module.ts
|--app.service.ts
|--main.ts

以下是这些核心文件的简要概述:

app.controller.ts具有单一路线的基本控制器
app.controller.spec.ts控制器的单元测试
app.module.ts应用程序的根模块
app.service.ts具有单一方法的基础服务
main.ts应用程序的入口文件,使用核心函数NestFactory创建Nest应用程序实例

main.ts包含一个异步函数,它将引导我们的应用程序。

import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';

async function bootstrap() {
const app = await NestFactory.create(AppModule);
await app.listen(3000);
}
bootstrap();

要创建Nest应用程序实例,我们需要使用核心NestFactory类。 NestFactory类提供了几个静态方法,用于创建应用程序实例。 create()方法会返回一个应用程序对象,该对象符合INestApplication接口。 该对象提供了一系列方法,这些方法将在接下来的章节中介绍。在上面的main.ts示例中, 我们只需启动HTTP监听器,让应用程序等待入站HTTP请求即可。

请注意,使用Nest CLI搭建的项目会创建一个初始化项目结构,鼓励开发人员遵循每个模块 保留在其自己的专用目录中的约定。

tip

默认情况下,如果在创建应用程序时发生任何错误, 您的应用程序将退出并显示代码1。 如果您想让它抛出错误,请禁用abortOnError选项,例如 NestFactory.create(AppModule, {abortOnError: false})

平台

Nest的目标是成为一个与平台无关的框架。 平台独立性使得创建可重复使用的逻辑部件成为可能,开发人员可以再多种不同类型 的应用程序中利用这些逻辑部件。 从技术上讲,一旦创建了适配器,Nest就能与任何Node HTTP框架协同工作。 开箱即支持两种HTTP平台:express和fastify。您可以选择最适合您需求的一种。

  • express平台

    Express是一个著名的极简网络节点框架。 它是一个经过实战检验、可用于生产的库,拥有大量由社区提供的资源。 默认使用@nestjs/platform-express包。 许多用户都能很好地使用Express,无需采取任何措施启用它。

  • fastify平台

    Fastify是一个高性能、低开销的框架,高度专注于提供最大的效率和速度。 在这里阅读如何使用它

无论使用哪个平台,它都会公开自己的应用程序结构,它们分别被视为NestExpressApplicationNestFastifyApplication

如下例所示,当你向NestFactory.create()方法传递一个类型时, 应用程序对象将拥有该特定平台专用的方法。但请注意,除非您真的想访问底层平台API,否则无需指定类型。

const app = await NestFactory.create<NestExpressApplication>(AppModule);

运行应用程序

安装过程完成后,您可以再操作系统命令提示符下运行以下命令来启动应用程序侦听入站HTTP请求:

npm run start
tip

为了加快开发过程(构建速度加快20倍),您可以通过将-b swc标志传递给启动脚本来使用SWC构建器, 如下所示npm run start -- -b swc

此命令将启动应用程序,HTTP服务器将监听src/main.ts文件中定义的端口。 应用程序运行后,打开浏览器并导航至http://localhost:3000。您将看到Hello World!

要查看文件中的更改,可以运行以下命令启动应用程序:

npm run start:dev

该命令将监听您的文件,自动重新编译并重新加载服务器。

语法检查和格式化

CLI尽最大努力构建可靠大规模开发工作流程。因此,生成的Nest项目预装了代码linterformatter程序(分别为eslintprettier)

info

不确定格式化程序与代码检查的作用?在这里了解差异

为了确保最大的稳定性和可扩展性,我们使用基本的eslintprettier包。 此设置允许IDE在设计上与官方扩展完美集成。

# 使用eslint进行lint和自动修复
npm run lint
# 使用prettier设置的格式进行代码格式化
npm run format

对于IDE不相关的无头环境(持续集成、Git挂钩等),Nest项目附带了现成的npm脚本