在我使用的几乎所有节点/表达模板语言中(ejs,kiwi,swig和jade),答案是否定的。我一直只是设置一个名为“
active”的变量,然后进行检查。正如您所说,这不是一个很好的答案,尽管我不知道可伸缩性是问题所在。如果每个url都呈现其自己的视图(或者即使您具有用于视图呈现的通用处理程序),则说起来也不难
req.active= "Somepage"。另一种可能性是添加基于路由为您执行此 *** 作的中间件。就像是
app.use(function(req, res, next){ req.active = req.path.split('/')[1] // [0] will be empty since routes start with '/' next();});
然后,只需确保具有相应导航组件的任何路由都使用唯一路径,例如
app.get('/students', ....)app.get('/classes', ....)app.get('/teachers', ....)// etc.
编辑:为了回应您的评论,我总是将所有视图内容都放入一个对象密钥内
req,通常我会使用我使用的任何模板程序来命名该密钥。所以我实际上可能会使用上面的示例进行设置
req.ejs.active,然后执行
res.render('myview', req.ejs);
这种方法使将逻辑分离为多个中间件功能变得更加容易,而不必将巨大的匿名对象传递给res.render。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)