前言
Nest.js 是一个基于 Node.js 平台的 Web 应用框架,它使用现代化的 JavaScript 或 TypeScript 来构建高效、可扩展的服务器端应用程序。Nest.js 借鉴了 Angular 的架构风格,同时又结合了 Express、Fastify 等框架的优点,使其在开发 Web 应用时更加舒适、简洁、高效。
安装和配置 TypeScript
首先,我们需要安装 TypeScript。在命令行中使用以下命令进行安装:
npm install -g typescript
安装完成后,我们需要在项目中添加 tsconfig.json
配置文件。这个文件包含了 TypeScript 编译器的一些配置信息。在项目根目录下创建这个文件,并将以下代码添加进去:
-- -------------------- ---- ------- - ------------------ - ------------ ----- -------------- ----- ---------------- ----- --------- ----------- --------- ------ --------- --------- --------- ----- ------------------ ----- ------------------- ------ -- ---------- ---------------- ---------- ---------------- -
这里主要介绍几个关键选项:
"sourceMap"
:生成.map
文件,用于调试 TypeScript 代码。"declaration"
:生成.d.ts
文件,用于支持 TypeScript 类型检查。"noImplicitAny"
:禁止使用隐式类型 any。"module"
:生成的 JavaScript 模块标准。"target"
:编译后的 JavaScript 标准版本。"outDir"
:编译后的 JavaScript 代码输出目录。"strict"
:开启 TypeScript 的严格模式。"esModuleInterop"
:支持使用 CommonJS 和 ES6 之间的互操作性。"moduleResolution"
:解析模块的方式,默认为node
。"include"
:要编译的 TypeScript 文件路径。"exclude"
:不需要编译的文件路径,这里我们排除了node_modules
文件夹。
Nest.js 应用程序的构建
在开始构建 Nest.js 应用程序之前,我们需要先了解一些基本的概念和部件。Nest.js 应用程序有以下三种构建形式:控制器(Controller)、服务(Service)、提供器(Provider)。它们之间的关系可以表示为:
Controller -> Service -> Provider
其中,控制器负责接收和响应 HTTP 请求;服务封装了业务逻辑并与控制器交互;提供器负责提供一些常用的工具和服务。下面的示例中,我们将使用这种构建形式来创建一个简单的 Nest.js 应用程序。
首先,我们需要安装 Nest.js。在命令行中使用以下命令进行安装:
npm install --save @nestjs/core @nestjs/common @nestjs/platform-express
这里介绍几个模块:
@nestjs/core
:核心模块,提供了 Nest.js 应用程序的核心功能。@nestjs/common
:通用模块,提供了一些通用的工具和服务。@nestjs/platform-express
:Express 平台模块,用于与 Express.js 的集成。
在安装完成后,我们可以开始创建 Nest.js 应用程序。
创建控制器
我们通过控制器来接收和响应 HTTP 请求。在项目根目录下创建 cats.controller.ts
文件,添加以下代码:
-- -------------------- ---- ------- ------ - ----------- --- - ---- ----------------- ------------------- ------ ----- -------------- - ------ ---------- ------ - ------ ----- ------ ------- --- ------ - -
这里,我们定义了一个 CatsController
控制器,并使用 @Controller
装饰器指定了控制器的路由路径为 /cats
。然后,我们定义了一个 findAll
方法,用于处理 GET 请求,返回一个字符串。
创建服务和提供器
接下来,我们需要创建服务和提供器。在项目根目录下创建 cats.service.ts
文件,添加以下代码:
-- -------------------- ---- ------- ------ - ---------- - ---- ----------------- ------------- ------ ----- ----------- - ------- -------- ----- --------- ------------- - --------- - ----- --- ---- --- ---- ---- - ---------- -------- - ------ ---------- - ----------- -------- ------ - ------ -------------- - -
这里我们定义了一个 CatsService
服务,并使用 @Injectable
装饰器告诉 Nest.js 这是一个可注入的服务。在构造函数中,我们初始化了一个 cats
数组。然后,我们定义了一个 findAll
方法,用于返回 cats
数组;定义了一个 findOne
方法,用于返回指定元素的字符串。
接着,我们需要创建提供器。在项目根目录下创建 cats.provider.ts
文件,添加以下代码:
import { CatsService } from './cats.service'; export const catsProviders = [ { provide: 'CATS', useValue: new CatsService(), }, ];
这里我们创建了一个 catsProviders
数组,该数组包含一个对象,其中 provide
属性指定了提供器的名称,useValue
属性指定了提供器的值。在本例中,我们使用 CatsService
的实例作为提供器的值。
将控制器、服务、提供器组合在一起
现在,我们需要组合控制器、服务和提供器。在项目根目录下创建 app.module.ts
文件,添加以下代码:
-- -------------------- ---- ------- ------ - ------ - ---- ----------------- ------ - -------------- - ---- -------------------- ------ - ----------- - ---- ----------------- ------ - ------------- - ---- ------------------ --------- -------- --- ------------ ----------------- ---------- - ----------------- ------------ -- -- ------ ----- --------- --
这里我们定义了一个 AppModule
模块,并使用 @Module
装饰器指定了模块的组成部分:控制器、服务和提供器。在 providers
中,我们使用 ES6 扩展运算符 ...
将 catsProviders
中的提供器展开,并添加了一个 CatsService
的实例。
启动 Nest.js 应用程序
现在我们已经完成了 Nest.js 应用程序的构建,接下来我们需要启动应用程序并监听 HTTP 请求。在项目根目录下创建 main.ts
文件,添加以下代码:
-- -------------------- ---- ------- ------ - ----------- - ---- --------------- ------ - --------- - ---- --------------- ----- -------- ----------- - ----- --- - ----- ------------------------------ ----- ----------------- - ------------
这里我们使用 NestFactory
创建应用程序实例,并将 AppModule
作为参数传入。然后,我们使用 listen
方法来监听 HTTP 请求,并指定监听端口为 3000
。
测试 Nest.js 应用程序
启动应用程序之后,可以使用浏览器或者 Postman 等工具来测试应用程序。访问 http://localhost:3000/cats
,我们应该可以看到返回的字符串为 This action returns all cats
。
结语
本文介绍了如何使用 TypeScript 构建 Nest.js 应用程序,涉及到安装和配置 TypeScript、Nest.js 应用程序的构建、控制器、服务、提供器的创建、将控制器、服务、提供器组合成一个模块以及启动 Nest.js 应用程序等方面。希望本文对读者在使用 TypeScript 和 Nest.js 进行应用程序开发中有所帮助。如果有疑问或者建议,欢迎留言讨论。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67828eb7935627c90010ca13