ExpressJs:在视图上使用Navbar
我使用ExpressJS和EJS作为我的视图。
在我的导航栏中,当用户在当前页面上时,我有链接需要有一个class="active"
。 如果我在我的意见中使用partials。 我该怎么做呢?
样品
Index.ejs
<ul class="nav navbar-nav navbar-right"> <li><a class="active" href="/Index">Home</a></li> <li><a href="/About">About</a></li> <li><a href="/Work">Work</a></li> </ul>
About.ejs
<ul class="nav navbar-nav navbar-right"> <li><a href="/Index">Home</a></li> <li><a class="active" href="/About">About</a></li> <li><a href="/Work">Work</a></li> </ul>
Work.ejs
<ul class="nav navbar-nav navbar-right"> <li><a href="/Index">Home</a></li> <li><a href="/About">About</a></li> <li><a class="active" href="/Work">Work</a></li> </ul>
这是我的做法!通过做一个navbar每次我做一个新的一页
我应该怎么做,当我渲染一个新的页面是不需要再次渲染导航栏?
您可以将“主动”路由的值作为局部variables传递给局部variables。
<%- include('partial/nav', {active: "About"}); %>
然后,检查活动的var以在nav部分模板中设置“活动”类:
<ul class="nav navbar-nav navbar-right"> <li><a <%if(active=="Home"){%>class="active"<%}%> href="/Index">Home</a></li> <li><a <%if(active=="About"){%>class="active"<%}%> href="/About">About</a></li> <li><a <%if(active=="Work"){%>class="active"<%}%> href="/Work">Work</a></li> </ul>
这是一个类似的方法
你应该像这样加载你的导航 –
<script> $("#header").load("header.ejs"); </script>
然后检索当前页面的URL,并从中检索活动页面名称。 然后使用此function将活动类添加到当前页面,
$(document).ready(function($){ var url = window.location.href; $('.nav li a[href="'+url+'"]').addClass('active'); });
注意:您需要通过某个函数从您的url中检索页面名称,因为这将是整个页面的URL。
您将不得不只写一次header.ejs并将其包含在每个页面上。
希望这可以帮助!