【问题标题】:Modification of an inherited template in jade修改jade中的继承模板
【发布时间】:2016-05-09 19:35:50
【问题描述】:
我对翡翠模板和模板中存在的一些更复杂的功能很陌生。截至目前,我正在使用节点和玉构建一个模拟投资组合网站。我有一个由所有其他玉文件继承的布局。布局中包含所有通用站点导航。我想突出显示用户当前所在网站的哪个部分。我目前正在通过拥有一个独特的 js 文件来执行此操作,该文件将在用户位于特定部分时加载。此 js 文件将在列表项上添加一个类,在其中将突出显示添加到导航。
我的问题是,我是否需要创建和加载这些 js 文件才能完成此操作?有没有更好的方法来在一个模板中获得通用导航,同时拥有一个独特的荧光笔?
【问题讨论】:
标签:
javascript
node.js
express
pug
【解决方案1】:
如果突出显示没有功能性目的(例如可访问性),或者它是使用 URI 片段(主题标签)完成的,那么将其留给 JS 可能会更好。
如果你的导航高亮是每页,你可以在nodejs/jade中设置,例如:
app.get('/about', (req, res) => {
var locals = {};
locals.navHighlight = 'about';
res.render('about', locals);
});
在你的翡翠模板中你可以做这样的事情:
ul.navigation
li(class=(navHighlight=== 'about' ? 'highlight' : '')) About Me
li(class=(navHighlight=== 'blog' ? 'highlight' : '')) My Blog
无论您作为属性传递给res.render 的locals 对象,都可以在Jade 中作为变量使用。而在jade中,当使用tag(attr=value, attr2=value,...)格式时,你可以访问JS语法和暴露的变量。
只要你设置一个变量(例如navHighlight基于它进入哪个路由,你就可以使用它来设置标签的class属性。只要确保用空格分隔类名,如果你有多个类。