2013-06-11 2 views
1

Я видел образец кода на экспресс-сайт:Использование app.use() в экспресс/подключения

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

Connect держит "стек" (массив) из промежуточного ПО и маршрутизации обработчиков. И когда запрос обрабатывается, он просто выполняет итерацию через все функции обработчика в стеке по порядку и (с учетом некоторых правил сопоставления маршрутов) вызывает функции обработчика.

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

Я как-то неправильно прочитал исходный код и теперь имеет смысл. Благодаря! –

Смежные вопросы