快速中间件

时间:2016-07-01 09:53:23

标签: node.js express

我的代码:

var http = require("http");
var express = require("express");
var app = express();

app.set('port',3332);

app.get('/',function(req,res,next){
    res.send('OK');
    next();
});

app.use(function(req,res,next){
    console.log('middleware 1');
    next();
});

app.use(function(req,res,next){
    console.log('middleware 2');
});

http.createServer(app).listen(app.set('port'),function(){
    console.log('nodejs start listen 3332 port!');
});

nodejs服务器输出: nodejs start listen 3332 port!

中间件1

中间件2

中间件1

中间件2

为什么每个中间件被解雇2次,有人可以帮我解释一下。我知道如果删除next()中的app.get(),它会被解雇一次。中间件链是一个循环链吗?谢谢。

修改代码,在最后next()中添加app.use()。还有一个问题:

var http = require("http");

var express = require("express");
var app = express();

app.set('port',3332);

app.get('/',function(req,res,next){
    res.send('OK');
    next();
});

app.use(function(req,res,next){
    console.log('middleware 1');
    next();
});

app.use(function(req,res,next){
    console.log('middleware 2');
    next(); // new add
});

http.createServer(app).listen(app.set('port'),function(){
    console.log('nodejs start listen 3332 port!');
});
当我第一次访问网址时,会调用app.use()注册的Middelware。但是seconde时间,第三次在浏览器和cmd命令行中访问url时,都不会被调用。 为什么?

2 个答案:

答案 0 :(得分:3)

这是favicon.ico请求。每次请求网站索引页时,浏览器都会尝试加载图标。输出url以在控制台中查看它。使用curl / wget来运行请求。

答案 1 :(得分:0)

我更新了我的nodejs,使用浏览器时没关系。所以我认为这个问题与低版本nodejs有关。谢谢大家。