我可以为每个路由器指定特定的“视图”路径吗?

时间:2019-09-18 00:05:04

标签: node.js express express-router

根据the Express Docs,我可以使用<Application>.set("views", "my/views/path");设置一个通用目录来存储我的视图。我已经设置了项目,以便我的每条路线都有自己的目录和自己的目录。视图(以及其他特定于路线的内容)来补充我基于子域的方法。我希望能够执行类似<Router>.set("views", "router/views/");的操作,这样,当我要呈现页面时,我可以为该特定路由器简单地调用res.render("homepage");而不是res.render("<router>/views/homepage");

现在,我在根app.js中具有以下设置:

app.set("views", join(__dirname, "domains"));
app.set("view engine", "ejs");
// ...
for (const d in domains)
{
    if (d === "root")
        continue;

    const router = domains[d];
    app.use(vhost(`${d}.${process.env.DOMAIN_ROOT}`, router));
}

在我的“博客”路由器(​​对于我的blog.website.com子域)中,我有:

router.get("/", function(req, res)
{
    res.render("blog/views/index", {
        title: "My Tech Blog"
    });
});

我希望能够为每个路由器指定一个"views"目录,类似router.set("views")

1 个答案:

答案 0 :(得分:0)

我要使用this thread建议的子应用程序模式。

我从以下位置更改了路由器文件顶部的行:

const router = require("express").Router();

const router = require("express")();

我没有在我的项目中使用路由器,而是仅使用子应用程序来指定独立的视图路径:

router.set("view engine", "ejs");
router.set("views", join(__dirname, "domains"));