Nest.js 入门介绍
在这篇文章中,我们将介绍 Nest 的核心基础知识。 为了熟悉 Nest 应用程序的基本架构,我们将构建一个基本的 CRUD 应用程序,其主要的功能是对基础进行介绍。
Nest 基础介绍
首先我们先对Nest.js 的基础进行简单的介绍
语言
我们已经习惯了 TypeScript,但最重要的是——我们喜欢使用 Node.js。 这就是 Nest 兼容 TypeScript 和纯 JavaScript 的原因。 Nest 利用了最新的语言特性,因此要将它与 vanilla JavaScript 一起使用,我们需要一个 Babel 编译器。
我们将在示例中主要使用 TypeScript,但我们始终可以将代码片段切换为原生 JavaScript 语法。
前期准备
请确保您的操作系统上安装了 Node.js(>= 10.13.0,v13 除外)。
安装
使用 Nest CLI 脚手架创建新项目非常简单。 安装 npm 后,我们可以在 OS 终端中使用下面命令安装 Nest 脚手架并且使用它创建一个新的 Nest 项目:
$ npm i -g @nestjs/cli
$ nest new project-name
具体安装和创建项目的过程我们在 Nest.js 中文教程首页有介绍
运行上面的命令,最终我们将创建 project-name 目录,将安装 node 模块和一些其他模板文件,并将创建一个 src/ 目录并且包含几个核心文件。
下面是这几个核心文件的简要概述:
文件 | 概述 |
---|---|
app.controller.ts | 具有单个路由的基本控制器。 |
app.controller.spec.ts | 控制器的单元测试。 |
app.module.ts | 应用程序的根模块。 |
app.service.ts | 具有单一方法的基本服务。 |
main.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
类。 NestFactory 公开了一些允许创建应用程序实例的静态方法。 create() 方法返回一个应用程序对象,该对象实现了 INestApplication
接口。 该对象提供了一组方法,这些方法将在接下来的章节中描述。 在上面的 main.ts 示例中,我们只是启动了 HTTP 监听器,它让应用程序等待入站的 HTTP 请求。
注意
:使用 Nest CLI 搭建的项目会创建一个初始项目结构,建议开发人员遵循将每个模块保存在其自己的专用目录中的约定。
平台
Nest 旨在成为一个与平台无关的框架。 平台独立性使得创建可重用的逻辑部分成为可能,开发人员可以在多种不同类型的应用程序中利用这些部分。 从技术上讲,一旦创建了适配器,Nest 就可以使用任何 Node HTTP 框架。 有两种开箱即用的 HTTP 平台支持:express 和 fastify。 我们可以选择最适合自己需求的一种。
框架 | 描述 |
---|---|
platform-express | express 是一个著名的 Node.js 极简 Web 框架。 这是一个经过实战考验、可用于生产的库,其中包含由社区开发的大量资源。 默认使用 @nestjs/platform-express 包。 许多用户都可以很好地使用 Express,并且无需采取任何特殊措施来启用它。 |
platform-fastify | fastify 是一个高性能且低开销的框架,高度专注于提供最大的效率和速度。 |
无论使用哪个平台,它都会公开自己的应用程序接口。 它们分别为 NestExpressApplication
和 NestFastifyApplication
。
当我们将类型传递给 NestFactory.create()
方法时,如下例所示,应用程序对象将具有专门用于该特定平台的方法。 但是请注意,除非我们确实想要访问底层平台 API,否则不需要指定类型。
const app = await NestFactory.create<NestExpressApplication>(AppModule);
运行 Nest 应用程序
安装过程完成后,我们可以在操作系统命令提示符处运行下面命令来启动应用程序来监听入站 HTTP 请求:
$ npm run start
此命令使用 HTTP 服务器启动应用程序,该服务器监听 src/main.ts 文件中定义的端口。 应用程序运行后,打开浏览器并在导航栏中输入 http://localhost:3000/
。 我们应该会看到 “Hello World!” 信息。
下面让我们更改 app.service.ts 文件中的输出内容,将 “Hello World!” 修改成 “Hello 迹忆客!” 。
import { Injectable } from '@nestjs/common';
@Injectable()
export class AppService {
getHello(): string {
return 'Hello 迹忆客!';
}
}
然后重启服务,我们可以看到如下输出内容
如果要更改了文件之后,不需要手动重启服务,而是要自动重启服务的话,我们可以运行以下命令来启动应用程序:
$ npm run start:dev
上面的命令将监控我们的文件,一旦有更改则会自动重新编译和重新加载服务。