我可以为每个路由器指定一个特定的 'views' 路径吗?
Can I specify a specific 'views' path for each 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" 路由器中(对于我的 blog.website.com
子域),我有:
router.get("/", function(req, res)
{
res.render("blog/views/index", {
title: "My Tech Blog"
});
});
我希望能够为每个路由器指定一个 "views"
目录,类似于 router.set("views")
;
我将使用 this thread 建议的子应用程序模式。
我将路由器文件顶部的行更改为:
const router = require("express").Router();
到
const router = require("express")();
我没有为我的项目使用路由器,而是简单地使用子应用程序来指定独立的视图路径:
router.set("view engine", "ejs");
router.set("views", join(__dirname, "domains"));
根据 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" 路由器中(对于我的 blog.website.com
子域),我有:
router.get("/", function(req, res)
{
res.render("blog/views/index", {
title: "My Tech Blog"
});
});
我希望能够为每个路由器指定一个 "views"
目录,类似于 router.set("views")
;
我将使用 this thread 建议的子应用程序模式。
我将路由器文件顶部的行更改为:
const router = require("express").Router();
到
const router = require("express")();
我没有为我的项目使用路由器,而是简单地使用子应用程序来指定独立的视图路径:
router.set("view engine", "ejs");
router.set("views", join(__dirname, "domains"));