将变量传递给外部路由

时间:2014-06-26 14:19:31

标签: node.js express

我有一个Node js和Express网络应用程序。

我的app.js看起来像

var pages_route = require('./route/pages');

/*
---------------------
------ ROUTE --------
---------------------
*/

app.get('/', pages_route.index);//home

我的路线/ pages.js看起来像

exports.index = function(req, res){

  res.render( 'home.ejs');

};

我试图从app.js文件传递每个路径的视图名称,如下所示:

app.get('/', pages_route.index), template = 'home';

在route / pages.js

 exports.index = function(req, res){

      res.render( template + '.ejs');

    };

此解决方案适用于单个路由,但是当我创建多个类似

app.get('/', pages_route.index), template = 'home';
app.get('/custompage', pages_route.custom), template = 'skeleton';

应用程序将为所有路径传递最后一个视图名称,在本例中为视图"骨架"将打印我的所有路线。

我不想为每个路径创建不同的实例,如template1,template2,template3等。我只是想找到一个类似于我的例子的解决方案。

谢谢!

1 个答案:

答案 0 :(得分:0)

Express并没有像本地节点那样只给你reqres。它还为您提供了next

Next允许您构建中间件,作为处理请求的一部分而发生的功能,但不一定结束请求。

以下是您的用例示例:

// middleware
function setTemplate (template) {
  return function applyTemplate (req, res, next) {
    req.template = template;
    next();
  };
}

// route
app.get('/', setTemplate('home'), pages_route.index);

// handler
exports.index = function (req, res) {
  res.render(req.template + '.ejs');
};