聯盟支持通過before
屬性連接的中間件,如前面其他人所說。但是,union不處理應用程序配置;熨斗做。但是,api與express有很大不同。
例如,配置一個應用程序可能是這個樣子:
var path = require('path'),
flatiron = require('flatiron'),
app = flatiron.app,
plugins = flatiron.plugins,
connect = require('connect'), // most connect middlewares work with flatiron ootb
passport = require('passport');
// Use flatiron's http plugin (not the same as a middleware!)
app.use(plugins.http);
// configuration consists of key/value pairs, not of function blocks associated with
// certain "environments".
// Here's *a* way you can handle environment-based configs; there are others!
app.config.file(path.resolve(
__dirname,
'config',
(process.env.NODE_ENV || 'config') + '.json'
));
// Use our config to set the secret
app.http.before.push(connect.session({
secret: app.config.get('secret') || 'keyboard cat' //default
}))
app.http.before.push(passport.initialize());
app.http.before.push(passport.session());
我還沒有試過運行這個例子(我敢肯定有很多細節),但希望這給你的想法。
'之前'與每個請求調用。應用程序加載時,僅配置一次app.configure。所以這是不一樣的(併產生大量的開銷)。 – Patrick 2012-03-20 09:39:18
@Patrick這就是[Connect](http://www.senchalabs.org/connect/)基於中間件的工作原理 - 它們必須能夠響應每個請求,或者將它傳遞到下一個中間件。 ['app.configure'](http://expressjs.com/guide.html#configuration)設置相同的場景;它只是選擇一系列'app.use'調用(可以選擇將它們連接到各種部署模式),而不是一個單獨的,常量的'before'數組。這就是爲什麼它可以幫助挑剔你使用的中間件 - 每一個都會不斷增加一些開銷。 – 2012-03-20 16:53:19
嗯,好的。我習慣於Express中的場景。我只是想知道,因爲護照不起作用,我不明白爲什麼。 – Patrick 2012-03-20 18:07:15