npm 包@nestjs/platform-express使用教程

阅读时长 7 分钟读完

介绍

在前端开发中,Nest JS 是一种流行的框架,Nest JS 允许我们使用 TypeScript 和一些其他 Node.js 工具来构建高效并且可伸缩性的应用程序。@nestjs/platform-express 是 Nest JS 的一个重要模块,它提供了一系列的功能,可以帮助我们快速构建高效的应用程序。

安装

在使用@nestjs/platform-express之前,我们需要确保已经安装了Node.jsNPM,在终端中输入以下命令以安装@nestjs/platform-express:

用法

启用静态文件服务

@nestjs/platform-express中提供的StaticFileServer会提供静态文件服务。我们可以使用@nestjs/common库中的NestFactory来创建一个app实例,然后我们可以把这个实例传给StaticFileServer实例,从而启动静态文件服务,如下所示:

-- -------------------- ---- -------
------ - ----------- - ---- ---------------
------ - --------- - ---- ---------------
------ - -- ------- ---- ----------
------ - ---- - ---- -------
------ - ---------------------- - ---- ---------------------------

----- -------- ----------- -
  ----- --- - ----- ------------------------------------------------------

  ----- ------- - -
    ----- --------------- ----- ----------
  --

  ----------------------------------- ----- ---------- ---------

  ----- -----------------
-

------------

在这个例子中,我们把静态文件目录设置为项目目录下的public文件夹,我们可以查看public文件夹中的文件,如index.html,这样我们就启动了一个静态文件服务。

使用模板引擎

在@nestjs/platform-express中提供了一系列辅助工具,我们可以使用这些工具来使用模板引擎。在一个典型的使用场景中,我们需要设置模板引擎,然后在模板中填充数据并渲染模板,如下所示:

-- -------------------- ---- -------
------ - ----------- - ---- ---------------
------ - --------- - ---- ---------------
------ - -- ------- ---- ----------
------ - ---- - ---- -------
------ - ---------------------- - ---- ---------------------------
------ - -- ------ ---- ---------------------

----- -------- ----------- -
  ----- --- - ----- ------------------------------------------------------

  ----------------------------------- ----- ----------
  ------------------ -------- -------- ------ ----
  -------------------------

  ----- -----------------
-

------------

在这个例子中,我们把视图文件目录设置为项目目录下的views文件夹,告诉Express使用.handlebars文件拓展名来识别视图引擎,并赋值了一个渲染视图的函数,这意味着我们可以在一个视图中使用变量,并使用这个函数在运行时填充它,如下所示:

-- -------------------- ---- -------
----- --------- ----
--------- -----
------
  ------
    ----- ----------------
    --------- -----------
  -------
  ------
    ------------------
    ---------- -- -- ---- --------
  -------
-------

当我们在路由处理函数中返回一个包含数据的对象时,Nest会自动使用这个对象通过Express发送视图,并渲染模板:

-- -------------------- ---- -------
------ - ----------- --- - ---- -----------------

-------------
------ ----- ------------- -
  ------
  ------ -
    ------ - ------ --- ---- --
  -
-

我们可以访问http://localhost:3000来查看效果。

路由

Nest中有两个装饰器可以用来创建路由:@Controller和@Get、@Post、@Put、@Delete等。我们可以在一个Controller中创建多个路由,并将路由处理函数放到这个Controller中。例如,我们可以创建一个Home Controller,并且在这个Controller中创建一个路由:

-- -------------------- ---- -------
------ - ----------- --- - ---- -----------------

-------------
------ ----- -------------- -
  ------
  ------- -
    ------ - -------- -------- -- ------ --
  -
-

在这个例子中,我们使用@Controller装饰器和@Get装饰器来创建一个Home Controller,并将路由处理函数放到这个Controller中。

中间件

我们可以使用Nest中提供的中间件来修改请求和响应。Nest中的中间件和Node.js中的中间件非常相像。下面是一个在每次请求时记录请求头的中间件例子:

-- -------------------- ---- -------
------ - ----------- -------------- - ---- -----------------
------ - -------- --------- ------------ - ---- ----------

-------------
------ ----- ---------------- ---------- -------------- -
  -------- -------- ---- --------- ----- ------------- -
    -------------------------
    -------
  -
-

在这个例子中,我们定义了一个LoggerMiddleware,它会在每次请求时记录请求头。我们可以将LoggerMiddleware添加到app实例中:

-- -------------------- ---- -------
------ - ----------- - ---- ---------------
------ - --------- - ---- ---------------
------ - -- ------- ---- ----------
------ - ---- - ---- -------
------ - ---------------------- - ---- ---------------------------
------ - -- ------ ---- ---------------------
------ - ---------------- - ---- ----------------------

----- -------- ----------- -
  ----- --- - ----- ------------------------------------------------------

  ----------------------------------- ----- ----------
  ------------------ -------- -------- ------ ----
  -------------------------

  ----------- --------------------

  ----- -----------------
-

------------

在这个例子中,我们把LoggerMiddleware添加到了app实例中,可以在每次请求时调用LoggerMiddleware。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/nestjs-platform-express