jade模板条件类nodejs expressjs

Tyl*_*ans 3 templates node.js express pug

我有一个用于标题的玉模板文件并使用bootstrap标记.根据用户所在的页面,导航栏需要将class .active添加到该导航项.避免这样的长代码的最佳方法是什么?

header.jade

if nav=='home'
   li.active
      a(href="/") Home
else
   li
      a(href='/') Home
if nav=='about'
   li.active
      a(href='/about') About
else
   li
      a(href='/about') About
Run Code Online (Sandbox Code Playgroud)

路线

router.get('/about', function(req, res) {
   res.render('about', { nav:'about' });
});
Run Code Online (Sandbox Code Playgroud)

请注意如果标题中有更多链接,它会变得更长.有没有更好的方法将类"活动"添加到正在查看的页面?

谢谢泰勒

Tim*_*per 5

您可以创建一个处理列表项呈现的mixin.这样您的逻辑代码就不必重复:

mixin header-item(name, url)
  if name.toLowerCase() == nav
    li.active
      a(href=url)= name
  else
    li
      a(href=url)= name

+header-item('Home', '/')
+header-item('About', '/about')
Run Code Online (Sandbox Code Playgroud)