Как загрузить дополнительные теги CSS с помощью ejs? - PullRequest
0 голосов
/ 31 мая 2019

Я пытаюсь загрузить дополнительные, специфичные для страницы таблицы стилей, используя маршрутизацию Node.js / Express.js, но у меня возникают проблемы с частью ejs:

Экспресс:

res.render('index', { title: 'Home', css: 'index'}); // some pages won't have the 'css' parameter.

EJS загрузка:

<link rel='stylesheet' href='/static/stylesheets/shared.css' />
<% if (css) { %>
  <link rel='stylesheet' href='/static/stylesheets/<%- css %>.css' />
<% } %>

Глядя на официальную документацию EJS , мое утверждение if следует их логике:

<% if (user) { %>
  <h2><%= user.name %></h2>
<% } %>

Я получаю сообщение об ошибке css is not defined. По этой логике, не приведёт ли приведенный на сайте ejs пример и к ошибке, если user не был определен?

Что я здесь не так делаю?

1 Ответ

1 голос
/ 31 мая 2019

Попробуйте отправить все ваши данные в подобъект, например:

Экспресс:

res.render('index', {data:{title:'Home',css:'index'}});

или

res.render('index', {data:{title:'Home'}});

EJS:

<link rel='stylesheet' href='/static/stylesheets/shared.css' />
<% if (data.css) { %>
  <link rel='stylesheet' href='/static/stylesheets/<%- data.css %>.css' />
<% } %>

Если вы просто отправите, необязательно, на объект, подобный этому: {title:'Home',css:'index'} или {title:'Home'}, тогда переменная css может быть или не быть определена.

Вы можете изменить свой чекна if (typeof css !== 'undefined') но мне проще и меньше просто использовать подобъект.

...