javascript - 如何使用 ejs 加载可选的 css 标签?
问题描述
我正在尝试使用 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
。按照这个逻辑,如果user
没有定义,ejs网站上给出的示例不会也导致错误吗?
我在这里做错了什么?
解决方案
尝试在子对象中发送所有数据,如下所示:
表达:
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')
但我发现仅使用子对象更容易且更小。
推荐阅读
- mysql - 如何将非常大的sql文件导入mysql?
- java - bean 类的无效属性“字段 [0]”
- laravel - 重置密码向我发送 localhost url laravel
- asp.net-mvc - ASP.NET MVC5 应用程序内存泄漏
- laravel - 十月 CMS 和当前页面上的导航
- jquery - 如何将 JSON 返回数据作为参数传递给 URL 路由(laravel)
- jquery - 查找与页面当前 url 具有相同 url 的锚点
- sql - 如果没有找到结果,我不想发送空电子邮件
- java - 从 java 中选择 JKS 文件时出现问题?
- r - R/Rstudio 将浏览器设置为 chrome