2014-06-26 195 views
0

我有一个Node js和Express web应用程序。将变量传递给外部路由

我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'; 

在航线/ 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等创建一个不同的实例。我只是想找到一个类似于我的例子的解决方案。

谢谢!

回答

0

Express不会像本地节点那样给你reqres。它也为您提供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'); 
}; 
+0

非常感谢您的回答,这个解决方案工作正常! – Spetty