node.js – 在Express / Jade视图中访问当前请求

我有一个布局的玉视图通过无序列表有一个菜单,我想设置< li>为< li class =“active”> …< / li>当前页面在浏览器中呈现.

我假设我将不得不访问当前的请求,以确定何时在< li>上设置属性

我找不到任何例子,如何做到这一点,希望有人可以帮助

谢谢

解决方法

在您的路由中调用res.render()之前尝试这样做:

res.locals.path = req.path;
res.render('/page');

要么

res.render('/page',{ path: req.path });

那么你必须在你的视图中做一堆if / else语句(如上面的解决方案所示).

- if(currentUrl === '/')
    li(class='active')
        a(href='/') Current Driver Standings
- else
    li
        a(href='/') Current Driver Standings

但是,我更愿意在客户端执行此操作,以使我的模板文件免于尽可能多的逻辑:

页面模板文件(这是ejs,不知道如何回应玉):

<body data-path="<%= path %>">

然后用jQuery可以从body获取路径并附加一个活动类:

$(function(){
    var path = $('body').attr('data-path');
    $('nav li a[href='+path+']').parents('li').addClass('active');
});

更新:您也可以使用var path = window.location.pathname,而不是将其保存到body上的属性

//no need to save path to <body> tag first:

$(function(){
    var path = window.location.pathname;
    $('nav li a[href='+path+']').parents('li').addClass('active');
});

相关文章

这篇文章主要介绍“基于nodejs的ssh2怎么实现自动化部署”的...
本文小编为大家详细介绍“nodejs怎么实现目录不存在自动创建...
这篇“如何把nodejs数据传到前端”文章的知识点大部分人都不...
本文小编为大家详细介绍“nodejs如何实现定时删除文件”,内...
这篇文章主要讲解了“nodejs安装模块卡住不动怎么解决”,文...
今天小编给大家分享一下如何检测nodejs有没有安装成功的相关...