Мой код:Странная выполнить результат экспресс промежуточного
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 начать слушать 3332 порт!
промежуточного слоя 1
промежуточного слоя 2
промежуточного слоя 1
промежуточного слоя 2
Почему каждый промежуточного обжигают в 2 раза, может кто-нибудь помочь мне объяснить. Я знаю, если убрать next()
в app.get()
, он будет уволен 1 раз. Является ли цепочка промежуточного слоя круглой цепью? Спасибо.
Изменить код, добавить 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!');
});
Middelware зарегистрирована на app.use()
вызывается, когда я получить доступ к URL, в первый раз. Но второй раз, в третий раз доступ к URL-адресу как в браузере, так и в командной строке cmd, он не будет вызываться. Почему?
Я думаю, это потому, что вы используете функцию next() в app.get и app.use, где app.use всегда звонит, когда вы пытаетесь вызвать app.get –
Я протестировал, если я удалю следующий () в app.get(), то он не будет вызывать функцию обратного вызова, которая зарегистрирована в app.use(). Вы проверяете это? – profangong
Я не использую next() в get(). Мы используем return в get(). –