【问题标题】: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.renderlocals 对象,都可以在Jade 中作为变量使用。而在jade中,当使用tag(attr=value, attr2=value,...)格式时,你可以访问JS语法和暴露的变量。

    只要你设置一个变量(例如navHighlight基于它进入哪个路由,你就可以使用它来设置标签的class属性。只要确保用空格分隔类名,如果你有多个类。

    【讨论】:

    • 这正是我想要的,谢谢:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-20
    • 1970-01-01
    • 2017-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-23
    相关资源
    最近更新 更多