ミドルウェアはConnectの基盤であり、Express はその上に構築されています。つまり、着信 HTTP 要求と応答の複数のハンドラーを連鎖させることができます。app.use()
Express アプリケーションでそれぞれに指定する引数は、基本的に「ミドルウェア」であり、次のシグネチャを持つコールバックです。function (request, response, next)
ここnext
で、 はチェーンで呼び出す次のミドルウェア コールバックです。以下はすべてミドルウェアです (最後のものは 4 つのパラメーター シグネチャを持つエラー ハンドラーです)。
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(app.router);
app.use(function(err, req, res, next){
// logic
next();
});
Express 2 から 3.x への移行に関しては、移行は具体的には次のとおりです。
app.dynamicHelpers(
) (ミドルウェア + を使用res.locals
)
したがって、以前に外部js
ファイルにヘルパー関数があり、require
それを d で使用した可能性がある、不自然な例を使用しますdynamicHelper
。
//helpers.js
exports.dynamicHelpers = {
currentUser: function(req, res) {
return req.user;
}
};
// app.js
var helpers = require('./helpers').dynamicHelpers;
app.dynamicHelpers(helpers);
少し再編成すると、次のようなことができるようになります。
//locals.js
exports.setLocals = function(req, res, next){ //<- middleware function
res.locals.currentUser = req.user;
res.locals.otherVariable = ...;
next();
}
//app.js
var locals = require('./locals').setLocals;
...
app.use(locals);
これは、ミドルウェアと 3.x 以前の Expressのレビューを掲載した優れたブログですが、概念は同じです。記事dynamicHelpers
で使用されている唯一の違いは、またはres.local(name, value)
res.locals.name = value
res.locals({ name: value })