Встроенный 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);
Другие вопросы по тегам