Nodejs之Express中间件的分类介绍

 更新时间:2022年12月03日 14:02:41   作者:Hydrion-Qlz  
这篇文章主要介绍了Nodejs之Express中间件的分类,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

中间件的分类

为了方便大家理解和记忆中间件的使用,Express官方把常见的中间件用法,分成了5大类

分别是

  • 应用级别的中间件
  • 路由级别的中间件
  • 错误级别的中间件
  • Express内置的中间件
  • 第三方的中间件

1 应用级别的中间件

通过app.use()或app.get()或app.post(),绑定到app实例上的中间件,叫做应用级别的中间件,代码示例如下:

只要是直接通过app.xxx调用的,都可以理解为是应用级别的中间件

// 应用级别的中间件(全局中间件)
app.use((req, res, next) => {
    console.log("这是中间件函数")
    next()
})

// 应用级别的中间件(局部中间件)
app.get("/user", mw, (req, res) => {
    res.send('success')
})

2 路由级别的中间件

绑定到express.Router()实例上的中间件,叫做路由级别的中间件。

它的用法和应用级别中间件没有任何区别。

只不过,应用级别中间件是绑定到app实例上,路由级别中间件绑定到router实例上,代码示例如下:

const express = require("express")
const router = express.Router()

// 路由级别的中间件
router.use((req, res, next) => {
    console.log("Time: ", Date.now())
    next()
})

module.exports = router

3 错误级别的中间件

错误级别中间件的作用:专门用来捕获整个项目中发生的异常错误,从而防止项目异常崩溃的问题。

格式:错误级别中间件的function处理函数中,必须有4个形参,形参顺序从前到后,分别是(err, req, res, next)。

// 路由
app.get("/user", (req, res) => {
    throw new Error("服务器内部发生了错误!")
    res.send("Home Page")
})

// 错误级别的中间件,捕获整个项目的异常错误
app.use((err, req, res, next) => {
    console.log("Error: " + err.message)
    res.send("Error: " + err.message)
})

错误级别的中间件,必须注册在所有路由之后,如果放在前面会导致在该中间件之后的错误无法被捕获

4 Express内置的中间件

自Express4.16.0版本开始,Express内置了3个常用的中间件,极大的提高了Express项目的开发效率和体验:

  • express.static快速托管静态资源的内置中间件,例如:HTML文件、图片、CSS样式等(无兼容性)
  • express.json解析SON格式的请求体数据(有兼容性,仅在4.16.0+版本中可用)
  • express.urlencoded解析URL-encoded格式的请求体数据(有兼容性,仅在4.16.0+版本中可用)
// 配置解析 application/json 格式数据的内置中间件
app.use(express.json())

// 配置解析 application/x-www-form-urlencoded 格式数据的内置中间件
app.use(express.urlencoded({ extended: false }))

app.post('/user', (req, res)=>{
    // 在服务器, 可以使用 req.body 这个属性,来接受客户端端发过来的请求体数据
    // 在默认情况下,如果把配置解析表单数据的中间价, 则 req.body 默认等于 undefined
    console.log(req.body)
    res.send('ok')
})

除了错误级别的中间件,其他的中间件,必须在路由之前进行配置

5 第三方中间件

非Express官方内置的,而是由第三方开发出来的中间件,叫做第三方中间件。在项目中,大家可以按需下载并配置第三方中间件,从而提高项目的开发效率。

例如:在express@4.16.0之前的版本中,经常使用body-parser这个第三方中间件,来解析请求体数据。

使用步骤如下:

  • 运行npm install body-parser安装中间件
  • 使用require导入中间件
  • 调用app.use()注册并使用中间件

Express内置的express…urlencoded中间件,就是基于body~parser这个第三方中间件进一步封装出来的。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 详解NodeJs项目 CentOs linux服务器线上部署

    详解NodeJs项目 CentOs linux服务器线上部署

    这篇文章主要介绍了NodeJs项目 CentOs linux服务器线上部署,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-09-09
  • Nodejs处理Json文件并将处理后的数据写入新文件中

    Nodejs处理Json文件并将处理后的数据写入新文件中

    这篇文章主要介绍了Nodejs处理Json文件并将处理后的数据写入新文件中,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-10-10
  • Node.js中MongoDB查询数据的方法

    Node.js中MongoDB查询数据的方法

    在Node.js中,可以使用MongoDB驱动程序和Mongoose库来进行MongoDB的查询操作,本文就来介绍一下Node.js中MongoDB查询数据的方法,感兴趣的可以了解一下
    2023-12-12
  • Express实现定时发送邮件的示例代码

    Express实现定时发送邮件的示例代码

    在开发中我们有时候需要每隔 一段时间发送一次电子邮件,或者在某个特定的时间进行发送邮件,无需手动去操作,基于这样的情况下我们需要用到了定时任务。本文就来用Express实现定时发送邮件吧
    2023-04-04
  • Node.js编码规范

    Node.js编码规范

    编码规范比比皆是,但是很少有公司做好编码规范的。忍不住想谈谈编码规范的重要性,希望所有人都能够重视起来。
    2014-07-07
  • node.js require() 源码解读

    node.js require() 源码解读

    学习 Node.js ,必学如何使用 require 语句。本文通过源码分析,详细介绍 require 语句的内部运行机制,帮你理解 Node.js 的模块机制
    2015-12-12
  • nodejs socket实现的服务端和客户端功能示例

    nodejs socket实现的服务端和客户端功能示例

    这篇文章主要介绍了nodejs socket实现的服务端和客户端功能,结合具体实例形式分析了nodejs基于socket通信实现的服务端与客户端功能相关操作技巧,需要的朋友可以参考下
    2017-06-06
  • node+js搭建时间服务器的思路详解

    node+js搭建时间服务器的思路详解

    这篇文章主要介绍了node+js搭建时间服务器,通过本文的学习可以了解node的fs模块怎么读取数据及express怎么搭建服务器,设置数据接口的,需要的朋友可以参考下
    2022-07-07
  • node.js中的buffer.toJSON方法使用说明

    node.js中的buffer.toJSON方法使用说明

    这篇文章主要介绍了node.js中的buffer.toJSON方法使用说明,本文介绍了buffer.toJSON的方法说明、语法、接收参数、使用实例和实现源码,需要的朋友可以参考下
    2014-12-12
  • Node.js学习之查询字符串解析querystring详解

    Node.js学习之查询字符串解析querystring详解

    这篇文章主要给大家介绍了关于Node.js查询字符串解析querystring的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用node.js具有一定的参考学习价值,需要的朋友们下面来一起看看吧。
    2017-09-09

最新评论