最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

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

IT培训 admin 5浏览 0评论

在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目录。

在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. 暂无评论