1

Express Web サイトでサンプル コードを見ました。

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

4

1 に答える 1

4

Connect は、ミドルウェアとルート ハンドラーの「スタック」(配列) を保持します。そして、リクエストが処理されると、スタック内のすべてのハンドラー関数を順番に繰り返し処理し、(いくつかのルート マッチング ルールに従って) ハンドラー関数を呼び出します。

this.stack.push({ route: route, handle: fn });
于 2013-06-11T18:23:27.990 に答える