在server.js文件中获取请求url。 Node.js的

时间:2013-11-27 17:11:28

标签: node.js express

我有server.js文件,我定义了我的服务器和所有设置。

我需要在声明这些设置之前定义请求网址。因为我需要根据请求网址来定义它们。

一个例子:

var siteDir = ((app.route).lastIndexOf('/admin', 0) === 0) ? '/admin' : '/client';

app.engine('ejs', require('ejs-locals'));
app.set('views', __dirname + ('/template' + siteDir));
app.set('view engine', 'ejs');

因此,如果请求网址以'admin'开头,我将从admin文件夹加载模板,否则从客户端加载。

我当前的实现不起作用,因为app.route总是返回'/'。

我能在这做什么请给我一些建议。谢谢你提前。

2 个答案:

答案 0 :(得分:2)

您无法使用Express设置每个请求的视图目录,这是您正在尝试执行的操作。

但您可以在调用res.render()时使用子目录:

app.get('/admin/', function(req, res) {
  res.render('admin/index');   // renders '__dirname + /template/admin/index.ejs'
});

app.get('/', function(req, res) {
  res.render('client/index');  // renders '__dirname + /template/client/index.ejs'
});

答案 1 :(得分:-1)

你可以为此编写自己的中间件。

这样的事情:

var siteDir = "/client"; //default case;
app.use(function(req,res,next){
    if(req.path == '/admin') siteDir = '/admin';
    else siteDir = '/client';
    next();
});
app.engine('ejs', require('ejs-locals'));
app.set('views', __dirname + ('/template' + siteDir));
app.set('view engine', 'ejs');