NodeJS Express:不同视图目录的不同URL?

时间:2017-03-07 20:19:32

标签: node.js express

从我所知道的文档中,我可以将Express 4.12.x设置为使用多个视图目录,如下所示:

app.set('views', [
    __dirname + '/views1',
    __dirname + '/views2'
]);

但是我想让不同的url从不同的视图目录中获取视图。所以我想要像:

app.get('/views1/:view', function (req, res) {
    res.render(req.params.view);  //get the views only from /views1
});
app.get('/views2/:view', function (req, res) {
    res.render(req.params.view);  //get the views only from /views2
});

目前发生的事情是,Express始终检查:view中的/views1,然后检查/views2中的class Animal {} class Cat extends Animal {} class Kitten extends Cat{} function foo<A extends Animal>(a: A) { /* */ } ,无论网址如何。我知道这是Express的正常行为,但我很想知道是否可以让我的想法发挥作用。

1 个答案:

答案 0 :(得分:1)

重新阅读Express文档之后,我只是设法使用Express子应用程序作为中间件来实现它:

var express = require('express');
var app = express();

var views1app = express();
var views2app = express();

views1app.set('views', __dirname + '/views1');
views1app.set('view engine', 'pug');
views1app.get('/views1/:view', function (req, res) {
    res.render(req.params.view);
});

views2app.set('views', __dirname + '/views2');
views2app.set('view engine', 'pug');
views2app.get('/views2/:view', function (req, res) {
    res.render(req.params.view);
});

app.use(views1app, views2app);