我正在尝试使用 Node.js/Express.js 路由加载可选的、特定于页面的样式表,但在 ejs
部分遇到问题:
express :
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 网站上给出的示例是否也会导致错误?
我在这里做错了什么?
尝试像这样在子对象中发送所有数据:
express :
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')
,但我发现仅使用子对象更容易且更小。
我是一名优秀的程序员,十分优秀!