最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

在Express中更改每条路线的视图目录?

运维笔记admin10浏览0评论

在Express中更改每条路线的视图目录?

在Express中更改每条路线的视图目录?

我想单独为每个路由设置views目录,而不是为所有路由使用/views/

所以我为每个视图都有一个主文件夹,其中包含路径和视图:

var main = require('./main/main.js');
var test = require('./test/test.js');
app.use('/', main);
app.use('/test', test);

我如何告诉/main/test查看文件的路径,而不是查看所有这些文件的/ views?

我希望能够在res.render()中传递文件名,而不是相对路径。

使用app.set('views', ['main','test']);添加多个视图是可以的,但我宁愿将视图链接到该路由,以防在不同文件夹中存在具有相同名称的文件。还有一个问题是,当我希望它们都使用相同的布局文件时,它希望布局文件位于同一个文件夹中。

回答如下:

使用Express middleware根据路由器更改视图目录,您可以根据应用程序需要在应用程序级别或路由器级别编写中间名。

下面是应用程序级中间件根据路由更改视图目录的示例,

app.use(function (req, res, next) {
    if (req.path === '/main') app.set('views', './views2');
    else app.set('views', './views');
    next()
})

代码片段将检查request path,如果它是/main路由它将使用views2目录,否则它将使用views目录。

发布评论

评论列表(0)

  1. 暂无评论