快速中间件无序执行

时间:2014-05-07 04:59:23

标签: javascript node.js express

我正在学习Express中间件。我将我的中间件功能分成了一个简单的模块。我通常将我的模块导出为一个对象而不是一个可能是我的问题的函数但如果是这样我想知道为什么..无论如何,我在处理程序之前输出我的第一个中间件函数,然后是处理程序,然后第一个功能。有人可以解释为什么会这样吗?

这是我的主要app.js

var express = require('express');
var routes = require('./routes');
var user = require('./routes/user');
var http = require('http');
var path = require('path');
var something = require('./something');
var app = express();

app.set('port', process.env.PORT || 3000);
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');

app.use(something.firstMiddle);
app.use(something.lastMiddle);

app.get('/', something.middleHandler, function(req,res){
res.render('index', { title: 'Yo Mama!' });
});


http.createServer(app).listen(app.get('port'), function(){
    console.log('Express server listening on port ' + app.get('port'));
});

和我的模块something.js

module.exports = {
middleHandler: function(req,res,next){
    console.log('In the handler');
    next();
},
firstMiddle: function(req, res, next){
    console.log("In first middle!");
    next();
},
lastMiddle: function(req,res,next){
    console.log('Last middleware');
    next();
}
};

正在输出:

Express server listening on port 3000
In first middle!
In the handler
In first middle!

0 个答案:

没有答案