node.js - 我可以为每个路由器指定特定的 'views' 路径吗?

标签 node.js express express-router

根据the Express Docs ,我可以使用<Application>.set("views", "my/views/path");设置一个通用目录来存储我的 View 。我已经设置了我的项目,以便每个路由都有自己的目录和自己的 View (以及其他特定于路由的内容),以补充我基于子域的方法。我希望能够做类似 <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") ;

最佳答案

我将采用 this thread 建议的子应用程序模式.

我将路由器文件顶部的行更改为:

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

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

我没有在项目中使用路由器,而是简单地使用子应用程序来指定独立的 View 路径:

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

关于node.js - 我可以为每个路由器指定特定的 'views' 路径吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57983378/

相关文章:

javascript - 如果当前用户的 ID 与所述路由中的 ID 匹配,如何只允许访问该路由? Node JS

node.js - 添加多个占位符时快速路由不起作用

express - 如何优雅地处理 express 中的 promise rejection

javascript - Node : Load/read the content of a page from external website(domain)

javascript - 模块化nodejs中文件之间的功能

javascript - 使用 express.router() 使用 api key 向第三方 API 发出获取请求;

javascript - 如何使用express处理路由器中连续的两个斜杠?

javascript - 在 IBM Watson IoT NodeJS 客户端上捕获错误

node.js - Discord 机器人不响应命令

node.js - 如何在AWS Elasticache中测试Redis的性能?