有没有比为我正在使用的每个页面的导航栏定义一个变量更好的方法?



很抱歉标题措辞不当,我不确定用什么最好的方式来表达,我认为用代码解释会更容易。假设我有以下内容:

router.get('/chest', (req, res)=>res.render('muscles/chest/chest', {login: req.isAuthenticated(), user: req.user}));
router.get('/abs', (req, res)=>res.render('muscles/abs/abs', {login: req.isAuthenticated(), user: req.user}));
router.get('/biceps', (req, res)=>res.render('muscles/biceps/biceps', {login: req.isAuthenticated(), user: req.user}));
router.get('/frontdeltoids', (req, res)=>res.render('muscles/frontdeltoids/frontdeltoids', {login: req.isAuthenticated(), user: req.user}));
router.get('/quadriceps', (req, res)=>res.render('muscles/quadriceps/quadriceps', {login: req.isAuthenticated(), user: req.user}));

在我的layout.ejs文件中,我有:

<% if (login) { %>
<li class="nav-item">   
<a class="nav-link" href="/users/profile/<%= user.id%>"><span class="fas fa-user"></span> Profile</a>
</li>
<li class="nav-item">
<a class="nav-link" href="/users/logout"><span class="fas fa-sign-in-alt"></span> Logout</a>
</li>

有没有比必须添加";login:req.isAuthenticated((,user:req.user"我的layout.ejs文件不会给我一个未定义的登录错误?

我想到的第一个解决方案是实现一个中间件;全球化";您的局部变量。

这样的东西可以解决这个问题:

router.use(function(req, res, next){
res.locals.login = req.isAuthenticated();
res.locals.user = req.user;
next();
});
// The rest goes here

如果我不知怎么误解了你,请纠正我。

更新:请查看@ikhvjs的评论(谢谢(。

最新更新