Изменить каталог просмотров по маршруту в Экспресс? - PullRequest
0 голосов
/ 17 февраля 2019

Я хочу установить каталог 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']); это нормально, но я бы предпочелпредставления, связанные только с этим маршрутом, на случай, если в разных папках находятся файлы с одинаковыми именами.Также существует проблема, связанная с тем, что файл макета будет находиться в одной папке, когда я хочу, чтобы все они использовали один и тот же файл макета.

1 Ответ

0 голосов
/ 19 февраля 2019

Используйте 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 каталог.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...