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
事件将不会继续传递下去