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