如何使用ejs加载可选的CSS标签?

时间:2019-05-31 19:41:26

标签: javascript html css ejs

我正在尝试使用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 documentation,我的if陈述遵循其逻辑:

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

我收到错误css is not defined。按照这种逻辑,如果未定义user,在ejs网站上给出的示例是否还会导致错误?

我在这里做什么错了?

1 个答案:

答案 0 :(得分:1)

尝试将所有数据发送到这样的子对象中:

快递:

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'),但我发现仅使用子对象会更容易,更小。