Node.js 在Express中将菜单渲染为Jade视图部分
我在概念化如何使用Jade view partials在Express应用程序中呈现活动状态的菜单时遇到问题 我有这样的想法:Node.js 在Express中将菜单渲染为Jade视图部分,node.js,view,menu,express,pug,Node.js,View,Menu,Express,Pug,我在概念化如何使用Jade view partials在Express应用程序中呈现活动状态的菜单时遇到问题 我有这样的想法: ul.menu li a(href='/some/route').active li a(href='/another/route') 我希望将.active类应用于当前路由,以便我的CSS可以呈现活动的UI状态 当我用PHP编写时,这将通过一些复杂的if/else语句链来实现,但我假设有一种更优雅的方法。我错过了什么?杰德对路线一无所知。我不
ul.menu
li
a(href='/some/route').active
li
a(href='/another/route')
我希望将.active
类应用于当前路由,以便我的CSS可以呈现活动的UI状态
当我用PHP编写时,这将通过一些复杂的
if/else
语句链来实现,但我假设有一种更优雅的方法。我错过了什么?杰德对路线一无所知。我不认为有任何方法可以以这样或那样的形式避免if/else
在Express中,只需以本地身份通过路线:
res.render('my_view', {
current: 'current/url'
});
在视图中,拥有一系列菜单链接,并执行以下操作:
ul.menu
for each item in links
li
if (item.url == current)
a(href=item.url).active
else
a(href=item.url)
我的解决方案与Danmacrough的类似,但我觉得有点整洁 我使用中间件将url保存为所有请求的局部变量。确保这在你的路线之前
app.use(function(req, res, next) {
res.locals.url = req.url;
next();
});
我的菜单翡翠模板如下所示
ul
each link in links
li
a(href=link.url, class=link.url === url && 'active')= link.name
将var传递给每个视图有点疯狂,您可以尝试使用dynamic helper来修复它