我有一个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等。我只是想找到一个类似于我的例子的解决方案。
谢谢!
答案 0 :(得分:0)
Express并没有像本地节点那样只给你req
和res
。它还为您提供了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');
};