繁体   English   中英

将变量传递给外部路由

[英]Passing a variable to an external route

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

我的app.js看起来像

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

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

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

我的route / 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等)创建不同的实例。我只想找到一个与示例相似的解决方案。

谢谢!!

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');
};

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM