有没有办法在 Express 堆栈中注入中间件?我的意思是我想让我的 app.js 设置主中间件链,然后调用传递应用程序实例的其他模块,他们可能想要插入更多中间件(例如想要在正确位置添加护照的身份验证模块) )
你一定可以通过你的app
对象其他模块并调用use
那里。当然是执行中间件函数按照添加顺序,所以你必须非常小心,以确保你打电话use
以正确的顺序。
app.js
var app = express();
// ...
app.use(express.logger()); // first middleware function
var someOtherModule = require('./mod.js');
someOtherModule.init(app);
app.use(express.static()); // last middleware function)
mod.js
exports.init = function(app) {
app.use(function(req, res, next) {
});
};
就实际而言注射堆栈中间的中间件函数(在您已经调用之后app.use
使用一组中间件函数),没有记录的方法可以做到这一点。use
只将一个函数添加到堆栈末尾。
use
实际上是由 Connect 提供的proto.js https://github.com/senchalabs/connect/blob/2.7.0/lib/proto.js#L62-93:
app.use = function(route, fn){
...
this.stack.push({ route: route, handle: fn });
return this;
};
从技术上来说,你可以摆弄app.stack
你自己,但是我不会这样做。您可能会弄乱未记录的实现细节,而该细节很可能会发生变化。换句话说,未来可能会更新eitherConnect 或 Express 可能会破坏您的应用程序。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)