4

app.get() 引数リストに明示的に配置しなくても、デフォルトで呼び出されるルート ミドルウェアを Express で作成できるかどうかを知りたかったのですか?

// NodeJS newb

var data = { title: 'blah' };

// So I want to include this in every route
function a(){
  return function(req, res){
    req.data = data;
  };
};

app.get('/', function(req, res) {
  res.render('index', { title: req.data.title });
};

app.set('data', data)ルートでアクセスできることを理解していreq.app.settings.dataます。これはおそらく上記の私の簡単な例を満たすでしょう。

4

3 に答える 3

11
function a(req, res, next){
  req.data = data;
  // Update: based on latest version of express, better use this
  res.locals.data = data;
  next();
};

app.get('/*', a);

Express ドキュメントのミドルウェア セクションの例を参照してください。

于 2012-04-27T18:59:06.917 に答える
4

新しいエントリごとに新しいルートを明示的に作成しなくても、作成したすべてのビューを呼び出すデフォルトの方法を作成できます。次の例を確認してください。

app.get('/:viewname', function(req, res) {
    res.render(req.params.viewname, { viewname : req.params.viewname});
});

楽しみにしていただければ幸いです。

于 2013-01-10T14:42:50.603 に答える
1

この方法でも実行できます。

function my_middleware(req, res, next){
   req.data = data;

   if (something(res)) redirect('http://google.com'); // no access to your site
   next(); // go to routes

};

app.configure(function() {
   ...
   app.use(express.cookieParser('secret'));
   app.use(express.session());
   app.use(my_middleware);
   app.use(app.router);
   ...
}

この場合、my_middlewareは、Cookieとセッションがすでに利用可能であるが、ルートがまだ処理されていないときに呼び出されます。または、何らかの理由で必要な場合は、セッションの前に行うこともできます。

于 2013-01-10T13:38:16.003 に答える