express/connect中app.use()的使用

Usage of app.use() in express/connect

本文关键字:use connect app express      更新时间:2023-09-26

我在express网站上看到样例代码:

var express = require('express');
var app = express();
// simple logger
app.use(function(req, res, next){
  console.log('%s %s', req.method, req.url);
  next();
});
// respond
app.use(function(req, res, next){
  res.send('Hello World');
});
app.listen(3000);

这里app.use()调用了具有完全相同签名的函数,并且能够按顺序运行它们。这是如何在javascript中完成的?

app.use()的定义如下:https://github.com/senchalabs/connect/blob/master/lib/proto.js

Connect保持一个中间件和路由处理程序的"堆栈"(一个数组)。当一个请求被处理时,它只是按顺序遍历堆栈中的所有处理程序函数,并调用处理程序函数(根据一些路由匹配规则)。

this.stack.push({ route: route, handle: fn });