如何使用 TypeScript 构建 Nest.js 应用程序?

阅读时长 8 分钟读完

前言

Nest.js 是一个基于 Node.js 平台的 Web 应用框架,它使用现代化的 JavaScript 或 TypeScript 来构建高效、可扩展的服务器端应用程序。Nest.js 借鉴了 Angular 的架构风格,同时又结合了 Express、Fastify 等框架的优点,使其在开发 Web 应用时更加舒适、简洁、高效。

安装和配置 TypeScript

首先,我们需要安装 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)。它们之间的关系可以表示为:

其中,控制器负责接收和响应 HTTP 请求;服务封装了业务逻辑并与控制器交互;提供器负责提供一些常用的工具和服务。下面的示例中,我们将使用这种构建形式来创建一个简单的 Nest.js 应用程序。

首先,我们需要安装 Nest.js。在命令行中使用以下命令进行安装:

这里介绍几个模块:

  • @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 文件,添加以下代码:

这里我们创建了一个 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

纠错
反馈