第一步
在这组文章中,您将学习 Nest的 “核心基础知识”。为了让您熟悉 Nest 应用程序的基本构建模块,我们将构建一个基本的 CRUD 应用程序,其涵盖了入门级别的很多功能。
编程语言
我们爱上了 TypeScript,但是最重的是 - 我们热爱 Node.js。这就是为什么 Nest 同时兼容 TypeScript 和 纯 JavaScript 的原因。由于 Nest 利用了编程语言的最新功能,因此,要将其与原始的 JavaScript 一起使用,我们需要 Babel 编译器的协助。
我们将在提供的示例中主要使用 TypeScript,但您随时可以 将代码段切换为 纯 JavaScript 语法(只需单击每个代码片段右上角的语言切换按钮即可)。
先决条件
请确保在您的操作系统上安装了 Node.js (>= 10.13.0,v13 除外)。
新建项目
使用 Nest CLI 创建一个新项目非常简单。如果已经安装了 npm,您可以在操作系统终端(或命令行)中使用以下命令创建一个新的 Nest 项目:
$ npm i -g @nestjs/cli
$ nest new project-name
将创建 project
木、安装 node 模块和其它一些模板文件,同时还将创建 src/
目录,并填充几个核心文件。
以下是这些核心文件的简要概述:
app.controller.ts | 带有单个路由的基本控制器。 |
app.controller.spec.ts | 针对控制器的单元测试。 |
app.module.ts | T应用程序的根模块(root module)。 |
app.service.ts | 具有单一方法的基本服务(service)。 method. |
main.ts | 应用程序的入口文件,它使用核心函数 NestFactory 来创建 Nest 应用程序的实例。 |
main.ts
文件中包含了一个异步函数,此函数将 引导(bootstrap) 应用程序的启动过程:
@@filename(main)
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
async function bootstrap() {
const app = await NestFactory.create(AppModule);
await app.listen(3000);
}
bootstrap();
@@switch
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 创建的项目会拥有一个初始的项目结构,以鼓励开发人员将每个模块保存在其专用目录中。
平台
Nest 的目标是成为一个与平台无关的框架。平台独立性使创建可重用的逻辑部分成为可能,开发人员可以在多种不同类型的应用程序中利用这些逻辑部分。 从技术上讲,一旦创建了适配器,Nest 便可以使用任何 Node HTTP 框架。 目前支持两个 HTTP 平台:express 和 fastify。 您可以根据您的需求选择最适合平台。
platform-express | Express 是一个著名的、极简的、专为 node 开发的 web 框架。它久经考验、适用于生产环境的软件库,并且拥有大量的社区资源。默认情况下使用 @nestjs/platform-express 软件包。许多用户对 Express 都很满意,并且无需采取任何操作即可启用它。 |
platform-fastify | Fastify 是一个高性能且低开销的框架,高度专注于提供最高的效率和速度。点击 这里 查看它的使用文档。 |
无论使用那个平台,都会将平台的 application 接口暴露出来。它们分别是 NestExpressApplication
和 NestFastifyApplication
。
当您将类型信息传递给 NestFactory.create()
方法时,如下例所示,app
对象将具有该特定平台的专用方法。但是请注意,除非 您确实需要访问底层平台的 API,否则 无需 指定平台类型。
const app = await NestFactory.create<NestExpressApplication>(AppModule);
运行应用程序
安装过程完成后,您可以在操作系统的命令提示符下运行以下命令,以启动应用程序以侦听进入的 HTTP 请求:
$ npm run start
此命令将使用 HTTP 服务器启动应用程序,以侦听 src/main.ts
文件中所定义的端口。应用程序运行后,打开浏览器并访问 http://localhost:3000/
地址,您将看到类似 Hello World!
的信息。