在概述的文章中,我们会学到 NestJS 的核心基础。为了熟悉 Nest 应用程序的基本构件块,我们将构建一个基本的 CRUD 应用程序,涵盖了大量入门级的内容。
语言
兼容 TypeScript 和 pure 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退出。如果您想让它抛出错误,而不是停止应用,就要指定选项abortOnError为false(例如,NestFactory.create(AppModule, { abortOnError: false })
平台
Nest 旨在成为一个与平台无关的框架。平台独立性使得创建可重用的逻辑部分成为可能,开发人员可以在多种不同类型的应用程序中利用这些逻辑部分。从技术上讲,一旦创建了对应适配器,Nest 就可以与任何 Node HTTP 框架一起工作。 NestJS 开箱即用地支持两个 HTTP 平台:express 和 fastify。
| 平台 | 描述 |
|---|---|
platform-express | |
platform-fastify |
无论使用哪个平台,它都会公开自己的应用程序接口。 它们分别为 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! 信息。
要监视文件中的更改,你可以运行以下命令来启动应用程序:
$ npm run start:dev
此命令将监视你的文件,自动重新编译并重新加载服务器。