NodeJS 中间件如何工作?

How NodeJS middlewares works?

我的问题是为什么 console.log("after middleware") 只打印一次而 app.use(foo) 在每次重新加载页面后调用。尽管页面重新加载,但在控制台中使用 npm start 后是否会解释一次使用 NodeJS 代码?

const express = require('express')
const app = express()

function foo(req, res, next) {
    console.log("middleware1")
    next()
}

app.use(foo)
console.log("after middleware");

app.get('/', function(req,res){
    res.send("main page")
})

app.listen(3000)

基本上,为了简化一点,app.use() 是一个侦听器,每次访问页面时都会调用它。另一方面,console.log() 是仅调用一次的常规代码,当您的代码为 运行.

中间件是一个函数,return一个函数。 示例:

function myCustomMiddleware(x) {
   
  return function (req, res, next) {
    // This returned function can access to 'x' variable
    console.log(x)
    next() // Continue to the controller function.        
  }
}

app.get('/', myCustomMiddleware("Hello"), function(req,res){
  res.send("main page")
})