关于中间件以及next()的知识点

express处理中间件

express处理中间件的模型可叫做  '洋葱模型'

事件会在中间层之间顺序传递,

所有中间层件调用结束后, 

事件开始冒泡传递

const express = require('express')
const { fstat } = require('fs')
const http = require('http')
let app = express()

app.use((req, res, next) => {
  console.log('into 1')
  next()//中间件2在此处开始执行
  console.log('out 1') 
})


app.use((req, res, next) => {
  console.log('into 2')
  next()// 如果后续没有中间件层 调用到这里就结束了 开始返回
  console.log( 'out 2')
})


const server = http.createServer(app)
server.listen(3008)

server.on('listening', () => {
  console.log('端口 3008 建立连接')
})
server.on('request', (req) => {
  console.log(`请求: ${req.url}`)
})

所以上方代码的打印顺序为 

into 1   into 2   out 2   out 1

如果其中一段代码改为 

删除第一段next()

或者 删除第一段next(),加上 res.send('hello') 

app.use((req, res, next) => {
  console.log('into 1')
  res.send('hello') //或者这句删除
  console.log('out 1') 
})


app.use((req, res, next) => {
  console.log('into 2')
  console.log( 'out 2')
})

则结果为 into 1   out 1

事件将不会继续传递下去

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值