如何根据域名配置视图路径?

时间:2018-08-16 10:49:55

标签: node.js express

我正在使用几个域名来运行我的express.js应用程序。根据域,我想使用不同的视图:

app.set('views', path.join(__dirname, 'views', template));

我试图使用中间件来定义模板变量,但是似乎“它需要以另一种方式完成,因为节点应用程序说模板是未定义的。”

var domainConfig = function (req, res, next) {
  if(req.get('host') == 'domainA') {
      template = 'one';
  } else { 
      template = 'two';
  }
  next();
}

2 个答案:

答案 0 :(得分:0)

您没有在给变量赋值之前声明变量,也没有将其附加到以后可以访问的变量上。您可以这样改写:

var domainConfig = function (req, res) {
    if(req.get('host') === 'domainA') {
        res.template = 'one';
        return;
    } 
    res.template = 'two';
}

然后在级联的后面,您可以参考res.template来查看正在使用的文件,并使用它来设置模板路径或其他内容。

答案 1 :(得分:0)

谢谢!我已经使用以下方法解决了我的问题:

res.render(path.join(__dirname, '../views', res.template 'viewname'), {...}

但是,静态文件存在问题。在请求之前,我在app.js中定义了它们:

app.use(express.static(path.join(__dirname, 'public', 'templatename'));

当我知道正在使用哪个域时,这是在请求后执行此操作的另一种方法吗?