第一步

104 阅读3分钟

在概述的文章中,我们会学到 NestJS 的核心基础。为了熟悉 Nest 应用程序的基本构件块,我们将构建一个基本的 CRUD 应用程序,涵盖了大量入门级的内容。

语言

兼容 TypeScriptpure JavaScript

使用 TypeScript 开发会更爽。

前提

Node.js 版本大于等于12。

建立程序

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

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

提示 要创建启用 TypeScript 严格模式的新项目,请将 --strict 标志传递给 nest new 命令。

运行 nest new 命令后,node modules 文件夹和其他样本文件将被创建,以及 src 目录下将创建几个 NestJS 核心文件。

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

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 类,这个类暴露了一些静态函数让用户创建应用实例。create() 函数返回一个实现了 INestApplication 的应用对象。这个对象提供了一组方法,会在下面的章节详细介绍。在上面的 main.ts 例子中,我们简单的启动了HTTP监听器,它让应用等待相应端口的HTTP请求。

提示 默认情况下,如果在创建应用程序时发生任何错误,您的应用程序将以代码 1 退出。如果您想让它抛出错误,而不是停止应用,就要指定选项 abortOnErrorfalse(例如,NestFactory.create(AppModule, { abortOnError: false }

平台

Nest 旨在成为一个与平台无关的框架。平台独立性使得创建可重用的逻辑部分成为可能,开发人员可以在多种不同类型的应用程序中利用这些逻辑部分。从技术上讲,一旦创建了对应适配器,Nest 就可以与任何 Node HTTP 框架一起工作。 NestJS 开箱即用地支持两个 HTTP 平台:expressfastify

平台描述
platform-express
platform-fastify

无论使用哪个平台,它都会公开自己的应用程序接口。 它们分别为 NestExpressApplicationNestFastifyApplication

当您将类型传递给 NestFactory.create() 方法时,app 对象将具有专用于该特定平台的方法。 但是请注意,大部分情况不需要指定类型,除非您确实想要访问底层平台 API。

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

启动应用

完成建立程序的过程后,你可以运行以下命令以启动应用程序侦听入站 HTTP 请求:

$ npm run start

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

要监视文件中的更改,你可以运行以下命令来启动应用程序:

$ npm run start:dev

此命令将监视你的文件,自动重新编译并重新加载服务器。