node中如何定义中间件

1.中间件的概念

中间件可以理解为是一个进行数据或逻辑处理的方法,是数据或者逻辑处理的中枢,既然是中枢那么就有输入输出,输入就是我们使用该中间件的时候就是输入,输出就是要求我们在编写中间件的使用需要调用next(),没有next()那么处理完的数据还存放在中枢里那就没意义了。而全局中间件不管你在哪里做了什么都会进入该中间件进行处理;局部中间件就相当于有自己的作用域,一般挂载注册在需要该中间件去处理数据的路由上

2.局部中间件和全局中间件区别

2.1.全局中间件:使用server.use()注册挂载的中间件,而中间件其实就是进行数据处理和逻辑处理的方法,全局中间件在客服端访问了路由后就会调用中间件中的方法进行一系列处理

2.2.局部中间件:不使用server.use()注册挂载的中间件,而是在配置路由时直接在挂载在需要中间件去处理的路由中

javascript 复制代码
// 1.导入express和router
const express = require('express')
const router = require('./21模块化路由')

// 2.创建web服务器
const server = express()


// 3.监听服务器的启动
server.listen(80,()=>{
    console.log("web服务器启动了 http://127.0.0.1:80");
})


// 4.定义中间件:分为全局中间件和局部中间件
// 全局中间件:只要是客户端进行了请求就会进入中间件,使用server.use()进行挂载的中间件
// 局部中间件:不使用server.use()进行挂载的中间件,在配置路由时使用
// next是一个函数,中间件必须调用才能进入下一个中间件或者路由

// 自定义中间件
const mv = function (req,res,next){ // 用于注册为全局中间件
    console.log("这是一个中间件");
    next()
}

const mv1 = function (req,res,next){ // 用于注册为局部中间件
    console.log("这是第一个局部中间件");
    next()
}

const mv2 = function (req,res,next){ // 用于注册为局部中间件
    console.log("这是第二个局部中间件");
    next()
}

const mv3 = function (req,res,next){ // 用于注册为局部中间件
    console.log("这是第三个局部中间件");
    next()
}

// 5.将中间件定义为局部中间件
server.get('/kanno1',mv1,(req,res)=>{
    res.send({
        name:"龙body",
        classroom:"C class"
    })
})

server.get('/kanno2',mv2,(req,res)=>{
    res.send({
        name:"佐仓 爱里",
        classroom:" class"
    })
})

// 6.同时定义多个局部中间件,以下两个局部中间件写法是等效的
server.get('/kanno3',[mv1,mv2],(req,res)=>{
    res.send({
        name:"绫小路 铃音",
        classroom:"D class"
    })
})

server.get('/kanno4',mv1,mv2,(req,res)=>{
    res.send({
        name:"绫小路 帆波",
        classroom:"D class"
    })
})

// 7.将mv中间件定义为全局中间件
server.use(mv)
相关推荐
gqkmiss25 分钟前
Chrome 浏览器 131 版本开发者工具(DevTools)更新内容
前端·chrome·浏览器·chrome devtools
Summer不秃30 分钟前
Flutter之使用mqtt进行连接和信息传输的使用案例
前端·flutter
旭日猎鹰34 分钟前
Flutter踩坑记录(二)-- GestureDetector+Expanded点击无效果
前端·javascript·flutter
Viktor_Ye41 分钟前
高效集成易快报与金蝶应付单的方案
java·前端·数据库
hummhumm43 分钟前
第 25 章 - Golang 项目结构
java·开发语言·前端·后端·python·elasticsearch·golang
_半夏曲1 小时前
node.js、nginx、iis、tomcat针对部署方面的简述
nginx·node.js·tomcat
乐闻x1 小时前
Vue.js 性能优化指南:掌握 keep-alive 的使用技巧
前端·vue.js·性能优化
一条晒干的咸魚1 小时前
【Web前端】创建我的第一个 Web 表单
服务器·前端·javascript·json·对象·表单
Amd7941 小时前
Nuxt.js 应用中的 webpack:compiled 事件钩子
前端·webpack·开发·编译·nuxt.js·事件·钩子
隔着天花板看星星2 小时前
Kafka-Consumer理论知识
大数据·分布式·中间件·kafka