前言
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 进行应用程序开发中有所帮助。如果有疑问或者建议,欢迎留言讨论。
Source: FunTeaLearn,Please indicate the source for reprints https://funteas.com/post/67828eb7935627c90010ca13