Express.js:为 Web 应用程序提供中间件的基本知识

什么是 Express.js?

Express.js 是一个流行的 Node.js Web 应用程序框架,它提供了一个简单、快速和灵活的方式来构建 Web 应用程序。它是基于中间件的概念,这使得构建复杂的 Web 应用程序变得更加容易。

什么是中间件?

在 Express.js 中,中间件是一个函数,它可以访问请求对象(request object)、响应对象(response object)和应用程序的下一个中间件函数。中间件函数可以执行以下操作:

  • 执行任何代码。
  • 修改请求对象。
  • 修改响应对象。
  • 结束响应。
  • 调用下一个中间件函数。

中间件函数的形式如下:

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

其中,req 是请求对象,res 是响应对象,next 是一个函数,用于调用下一个中间件函数。如果当前中间件函数不调用 next,则请求将被挂起。

如何使用中间件?

为了使用中间件,我们需要使用 app.use() 方法。该方法将中间件函数添加到应用程序的中间件堆栈中。中间件函数将按照它们添加到堆栈中的顺序执行。

例如,下面的代码添加了一个中间件函数,用于记录所有请求的时间:

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

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

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

在这个例子中,我们使用 app.use() 方法添加了一个中间件函数。该函数记录了当前时间,并调用了 next() 函数,以便将请求传递给下一个中间件函数。

中间件的类型

在 Express.js 中,有三种类型的中间件:

应用程序级别的中间件

应用程序级别的中间件绑定到应用程序对象(app)上,并在所有路由中使用。例如,下面的代码添加了一个中间件函数,用于验证用户是否已经登录:

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

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

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

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

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

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

在这个例子中,我们使用 app.use() 方法添加了一个中间件函数,用于验证用户是否已经登录。该函数将在所有路由中使用。

路由级别的中间件

路由级别的中间件绑定到特定的路由上。例如,下面的代码添加了一个中间件函数,用于验证用户是否有权限访问 /admin 路由:

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

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

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

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

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

在这个例子中,我们使用 app.get() 方法添加了两个路由。第一个路由处理 / 路径的 GET 请求,第二个路由处理 /admin 路径的 GET 请求,并使用 authenticateUser 中间件函数进行身份验证。

错误处理中间件

错误处理中间件用于处理应用程序中的错误。例如,下面的代码添加了一个错误处理中间件函数,用于处理所有未处理的错误:

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

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

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

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

在这个例子中,我们使用 app.get() 方法添加了一个路由,该路由将抛出一个错误。我们还使用 app.use() 方法添加了一个错误处理中间件函数,用于处理所有未处理的错误。

总结

在本文中,我们介绍了 Express.js 中间件的基本知识。我们学习了中间件的概念、如何使用中间件以及中间件的类型。通过使用中间件,我们可以轻松地构建复杂的 Web 应用程序。

来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/6506c6bc95b1f8cacd274765


猜你喜欢

  • 使用 retry() 函数处理 RxJS 重试问题

    RxJS 是前端开发中常用的函数式编程库,可以帮助我们更方便地处理异步数据流,特别是在处理网络请求时,可以帮助我们避免复杂的嵌套结构。但是在网络请求中,由于网络不稳定或者服务器出错等原因,请求可能会失...

    1 年前
  • Docker+Jenkins 快速环境搭建及程序构建

    在前端开发中,通常需要通过不同的环境对开发的程序进行测试和部署。传统的方式是手动搭建不同的环境,然而这样的做法繁琐而且耗时。而 Docker 及其与 Jenkins 的搭配使用可以实现快速的环境搭建和...

    1 年前
  • 初学者指南:使用 Babel 插件转换 ES6 代码

    随着 JavaScript 越来越成为编程世界的主流语言,越来越多的开发人员开始关注其最新标准 ECMAScript 6 (ES6)。ES6 带来了许多新特性,如箭头函数、解构和模板字面量等,它们使得...

    1 年前
  • ECMAScript 2017 中的 ArrayBuffer 与 TypedArray 详解

    在前端开发中,涉及到二进制数据处理的时候,我们通常使用 ArrayBuffer 和 TypedArray。这两个对象在ECMAScript 2017中得到了增强和改进,本文将对这些增强和改进进行详细探...

    1 年前
  • JavaScript 代码优化与性能测试

    前言 随着互联网技术的快速发展,JavaScript 已成为前端开发中不可或缺的一部分。然而,在实际开发过程中,为了提高网页的加载速度和响应速度,我们必须对 JavaScript 代码进行优化和性能测...

    1 年前
  • 优化 CSS Grid 布局的性能和速度

    前言 如今,在 Web 开发过程中,CSS Grid 布局已成为一个必需的工具,它可以快速方便地创建复杂的网格布局,但是,一旦页面变得复杂,CSS Grid 布局很容易变得缓慢和卡顿。

    1 年前
  • 如何在 Next.js 中使用 React Hook

    React Hook 是 React 16.8 引入的新特性,它能够让我们在函数组件中使用 state 和其他 React 特性。它们能够让我们编写更简洁、可读性更高的代码。

    1 年前
  • 使用 Jest 测试 React 应用遇到的内存泄露问题及处理方法

    使用 Jest 测试 React 应用遇到的内存泄露问题及处理方法 在 React 应用的开发过程中,经常会使用 Jest 测试框架进行单元测试和集成测试。然而,在测试过程中,我们可能会遇到一些内存泄...

    1 年前
  • PWA 中如何实现网络异常情况下的优雅降级

    PWA(Progressive Web Apps)是一种可以将网页应用程序转换成类似于原生应用程序的技术,可以让 Web 应用程序具有更好的性能和体验。在 PWA 中,使用 Service Worke...

    1 年前
  • MongoDB 使用中遇到的访问控制问题及解决方案

    MongoDB 是一款非常流行的 NoSQL 数据库,在前后端开发中被广泛使用。然而,在使用 MongoDB 过程中,访问控制问题往往会成为一个困扰开发者的难题。本文将介绍 MongoDB 使用中可能...

    1 年前
  • Sequelize 报错 SequelizeConnectionError: connect ECONNREFUSED 解决方案

    问题描述 使用 Sequelize 连接数据库时,可能会遇到 SequelizeConnectionError: connect ECONNREFUSED 的错误问题。

    1 年前
  • JavaScript 处理 HTML5 Server-Sent Events 的实际应用

    HTML5 提供了一种新型的服务器推送技术——Server-Sent Events(SSE),它允许从服务器向客户端发送一次或多次的事件流,而无需在每个事件之间建立新的 HTTP 请求。

    1 年前
  • ECMAScript 2021中的Fetch API——异步请求的利器

    在现代前端开发中,异步请求已经成为了必备的技术手段。而 fetch API 是一种常用的浏览器原生异步请求方法,它在 ECMAScript 2021 中得到了加强和扩展,成为了更加强大的异步请求工具。

    1 年前
  • ES7 的 Object.entries 和 Object.values 方法的详解及应用

    ES7 中新增了 Object.entries 和 Object.values 两个方法,这两个方法都是用于处理对象的。 Object.entries 方法 Object.entries 方法的作用是...

    1 年前
  • Kubernetes 中的镜像拉取策略

    Kubernetes 是一种容器编排系统,可以帮助用户快速地部署、管理和扩展容器化应用程序。在 Kubernetes 中,镜像是容器的基础,因此镜像的管理对于应用程序的运行非常重要。

    1 年前
  • 从 JavaScript 到 TypeScript:逐步过渡和优化

    JavaScript 是前端开发中必不可少的语言之一,无论是网页动态交互、数据处理、还是浏览器脚本编写,都需要用到 JavaScript。不过,随着项目规模变大、模块化要求提高,JavaScript ...

    1 年前
  • 深入了解 CSS3 Flexbox 布局

    前言 Flexbox 是 CSS3 新增的一种布局模式,在许多实际应用中被广泛使用,本文将深入探讨 CSS3 Flexbox 布局的相关概念和使用方法,以及应用实例。

    1 年前
  • ES9 的解析器,帮你轻松深入理解 ECMAScript 底层实现

    ECMAScript (ECMA-262) 是 JavaScript 的标准化规范,而 ES9 (ES2018) 是 ECMAScript 最新的版本。本文将介绍 ES9 的解析器,帮助开发者深入理解...

    1 年前
  • ES10 教程:实现异步迭代和生成器函数

    随着 JavaScript 技术的不断发展和进步,ES10 已经成为了一些前端开发人员需要学习的技术知识之一。本篇文章将介绍 ES10 的两个新特性,即异步迭代和生成器函数,并且给出详细的代码示例。

    1 年前
  • Redux 如何实现 Undo 和 Redo 功能

    前言 Redux 是一个流行的 JavaScript 状态管理库,它提供了一种可预测且可维护的方式来处理应用程序的状态变化。在开发应用程序时,很常见的需求是需要实现 Undo 和 Redo 功能,即用...

    1 年前

相关推荐

    暂无文章