Встроенный JavaScript (EJS) - динамическая настройка вида с маршрута
Сейчас я изучаю nodejs, и мои файлы шаблонов.ejs в значительной степени стандартные (header, footer, js-defaults и т. Д.) - и единственное, что меняет его содержимое в HTML-div.
Я думал, что смогу установить переменную в своем маршруте и передать ее в представление (как вы бы назвали заголовок или другую переменную), а затем включить ее - но она не работает (пример ниже).
В Ruby вы можете сделать это с помощью yield, а я пытаюсь сделать то же самое с EJS.
Спасибо, что нашли время, чтобы прочитать (и, пожалуйста, прости мое невежество в этом вопросе).
Пример маршрута
app.get('/fish', function(req, res) {
res.render('fish' {
title:"Fish",
template:"view/partials/content/fish.ejs"
});
});
Пример EJS
<!DOCTYPE html>
<html>
<head>
<title><%= title %></title>
</head>
<% include views/partials/template/header.ejs %>
<body>
<div class="container">
<!-- Dynamic content here -->
<% include template %> <!-- tries to load template.ejs %>
</div>
</body>
<% include views/partials/template/footer.ejs %>
<% include views/partials/template/js-defaults.ejs %>
</html>
1 ответ
Похоже, что это теперь поддерживается в EJ S. Это было введено в v2.0.1: 2015-01-02. Новый синтаксис выглядит так
<!-- Dynamic content here -->
<%- include(template) %>
Чтобы это работало, мне пришлось отключить кэширование в Express, установив:
app.set('view cache', false);