Node.js 中 Express 框架中间件使用分析

什么是 Express 中间件?

在 Express 框架中,中间件是指在请求到达路由处理程序之前,对请求进行处理的函数。中间件可以用于处理请求、响应、路由和错误等方面。中间件可以是一个函数,也可以是一组函数。中间件函数可以访问请求对象(req)、响应对象(res)和应用程序的下一个中间件函数(next)。

Express 中间件的使用方式为:

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

其中,path 为可选参数,表示中间件的挂载路径。如果不提供 path 参数,则默认挂载到根路径。middleware 参数为中间件函数。

Express 中间件的分类

Express 中间件可以分为以下两种类型:

应用级中间件

应用级中间件是绑定到应用程序对象(app)上的中间件,可以使用 app.use()app.METHOD() 函数进行绑定。应用级中间件会在每个请求到达服务器时执行。应用级中间件可以用于处理路由、错误处理、请求过滤等方面。

以下是一个简单的应用级中间件的示例:

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

路由级中间件

路由级中间件是绑定到路由上的中间件,可以使用 router.use()router.METHOD() 函数进行绑定。路由级中间件会在路由处理程序之前执行。路由级中间件可以用于处理路由参数、请求过滤等方面。

以下是一个简单的路由级中间件的示例:

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

Express 中间件的执行顺序

在 Express 中,中间件的执行顺序是按照挂载顺序依次执行的。如果当前中间件没有调用 next() 函数,则后续中间件将不会被执行。

以下是一个中间件执行顺序的示例:

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

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

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

执行结果为:

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

Express 中间件的常用功能

处理静态文件

Express 中间件可以用于处理静态文件,例如 CSS、JavaScript、图片等。可以使用 express.static() 函数来创建一个处理静态文件的中间件。

以下是一个处理静态文件的中间件的示例:

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

该中间件将会处理 public 目录下的所有静态文件。

处理请求体

Express 中间件可以用于处理请求体,例如 JSON、urlencoded 等格式的请求体。可以使用 body-parser 模块来创建一个处理请求体的中间件。

以下是一个处理 JSON 请求体的中间件的示例:

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

该中间件将会处理所有 JSON 格式的请求体。

处理错误

Express 中间件可以用于处理错误,例如找不到路由、请求超时等错误。可以使用 next(err) 函数来传递错误到错误处理中间件。

以下是一个处理错误的中间件的示例:

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

该中间件将会处理所有的错误,并返回一个 HTTP 500 错误响应。

总结

Express 中间件是一个非常强大的功能,可以用于处理请求、响应、路由和错误等方面。掌握中间件的使用方法,可以大大提高开发效率和代码质量。在使用中间件时,需要注意中间件的执行顺序和错误处理等方面的问题,以确保应用程序的稳定性和可靠性。

参考资料

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


猜你喜欢

  • ESLint 报错:Unexpected use of 'event' 解决方案

    在使用 ESLint 进行前端代码规范检查时,经常会遇到 “Unexpected use of 'event'” 的错误,这个错误的发生原因是因为在代码中对 event 对象进行了错误的引用和操作。

    1 年前
  • 如何在 Babel 中使用 tree shaking 优化代码

    前端开发者们经常会遇到一个问题,就是如何在打包过程中优化代码,以提高网页的性能和加载速度。这就需要使用 Tree Shaking 技术。本文将详细介绍如何在 Babel 中使用 Tree Shakin...

    1 年前
  • Redis Configuration 配置类常用注解介绍

    Redis 是一种高性能键值数据库,常用于缓存和会话管理。在 Java 应用中使用 Redis 时,我们可以通过配置类来方便地管理 Redis 连接池、数据类型转换等功能。

    1 年前
  • 使用 Fastify 实现 JWT 鉴权方案

    使用 Fastify 实现 JWT 鉴权方案 在前端开发中,用户鉴权是不可或缺的一个环节。而基于 JWT(JSON Web Token) 的鉴权方案已经成为了广泛的选择。

    1 年前
  • Flexbox 如何实现艺术品展示页面的布局

    在现代 web 开发中,Flexbox 是一个非常强大且实用的工具,尤其在布局方面。它可以轻松地实现网站中复杂的布局要求,包括艺术品展示页面。 什么是 Flexbox? Flexbox 是一种用于网页...

    1 年前
  • 理解 ECMAScript 2017 中的 template literals(模板字符串)

    在 ECMAScript 2015 中,我们已经见识了 template literals(模板字符串)这一新概念,它允许开发者使用更加自然的方式来创建字符串。现在,作为 ECMAScript 201...

    1 年前
  • Sass 中使用 @content 的 Mixin 技巧与应用

    什么是 Sass? Sass 是一个流行的 CSS 预处理器,它提供了一些类似编程语言的语法来扩展 CSS 的功能,包括变量,嵌套,Mixin 等。 你可以在 官方网站 上下载它,也可以在 NPM 上...

    1 年前
  • ES9 中提供异步 iterator 使异步迭代更加方便

    在 ES9 中,我们终于可以使用异步 iterator 来处理异步迭代了。这个新特性使得异步迭代更加方便,减少了代码的复杂度,可以让我们更加专注于业务逻辑的处理,而不是关心异步迭代的实现细节。

    1 年前
  • Socket.io 实现的简易聊天室 DEMO

    随着现代化技术的不断发展,实时通信成为越来越重要的一部分。Socket.io 是一个实现了实时、双向、事件性通信的库,它是构建高性能、可扩展的实时应用程序的不二之选。

    1 年前
  • 使用 SSE 实现在线考试成绩实时推送

    在前端开发中,实时推送是一个常见的需求,比如在线考试中的成绩实时推送。Server-Sent Events (SSE) 是一种可以在客户端通过纯 JavaScript 代码监听服务器端实时消息的技术。

    1 年前
  • Node.js 中处理 JSON 的最佳实践

    在前端开发中,我们经常需要处理 JSON 数据。而在 Node.js 中,处理 JSON 的方式有多种,不同的实现有不同的性能和安全影响。 本文将介绍 Node.js 中处理 JSON 的最佳实践。

    1 年前
  • Redux 中如何处理错误

    Redux 是一个流行的 JavaScript 应用程序状态管理库。它为前端开发人员提供了一个可预测的状态容器,以便更好地管理应用程序状态。在 Redux 中,任何更改状态的操作都是由一个 actio...

    1 年前
  • CSS Reset 的性能测试与优化

    CSS Reset 是一种常用的前端技术,它的目的是通过消除各个浏览器默认样式之间的差异,为网站提供更加一致的外观和体验。然而,在进行 CSS Reset 的同时,也会带来性能和代码质量的问题。

    1 年前
  • 使用 Koa.js 实现 OTP 验证码功能

    什么是 OTP 验证码 OTP(One-Time Password)即一次性密码,是一种基于时间或事件的动态密码,一旦被使用后,就会失效。OTP 可以增加账户的安全性,常见的应用场景有:电子银行、电商...

    1 年前
  • MongoDB 中如何使用 Mongoexport 导出数据?

    MongoDB 中如何使用 Mongoexport 导出数据? Mongoexport 是 MongoDB 的一个命令行工具,用于以各种格式导出 MongoDB 数据。

    1 年前
  • Next.js 配置路由忽略 500 错误

    在使用 Next.js 框架进行前端开发时,配置路由忽略 500 错误是一个非常常见的需求。在本文中,我们将会向大家介绍如何配置路由来忽略 500 错误,让应用在处理错误时更加友好和稳定。

    1 年前
  • 无障碍模式开启:二手电商 “黑马” 拥有天然属性

    无障碍模式开启:二手电商 “黑马” 拥有天然属性 在当前数字化时代,很多网站和应用程序都在不断地更新和升级,以满足用户的需求和提高用户体验。但是,对于一些残障人群来说,这些设计可能并不是那么友好和易于...

    1 年前
  • 利用 Hapi 框架构建微信公众号开发

    微信公众号开发已经成为了一个非常热门的领域,越来越多的企业和个人开始关注和参与其中。虽然微信提供了非常详细的开发文档和 SDK,但是对于一些初学者来说,也很容易感到迷茫和困惑。

    1 年前
  • Chai 中使用 does.not.throw 进行异常测试

    测试是前端开发中不可或缺的环节,而异常测试是其中特别重要的一部分。在测试过程中,我们可以用 Chai.js 来断言某个函数或代码片段是否能够正常地运行或者抛出异常。

    1 年前
  • Cypress 在 React 项目中的使用指南

    前言 Cypress 是一款流行的前端自动化测试框架,具备可靠性高、易用性强、速度快等特点。近年来,越来越多的前端团队开始使用 Cypress 进行项目自动化测试。

    1 年前

相关推荐

    暂无文章