gpt4 book ai didi

javascript - 如何使用路线操纵导航栏?

转载 作者:太空狗 更新时间:2023-10-29 14:22:09 26 4
gpt4 key购买 nike

我的 layout.hbs 中有一个导航栏:

<div class="collapse navbar-collapse" id="collapse">        
<ul class="nav navbar-nav navbar-right">
<li><a href={{sign}}>{{issign}}</a></li>
<li><a href={{los}}>{{islog}}</a></li>
<li><a href="/">Home</a></li>
</ul>
</div>

我想随时更改内容,例如当用户登录时,我想将登录文本更改为注销并重定向到不同的页面。我正在通过路由执行此操作。

router.get('/', function(req, res, next) {

var vm = {
title: 'Join Fatty-cruxifinier',
sign: 'about',
issign : 'SIGNUP',
islog: 'LOGIN',
los: 'login'
};
res.render('signup', vm);
});

router.post('/', function(req, res, next) {
userServices.addUser(req.body, function(err){
if(err){
var vm = {
title: 'Create an account',
input: req.body,
error: err
};
delete vm.input.password;
return res.render('signup', vm);
}
res.redirect('/');
});
});

虽然这似乎可行,但我需要添加 islogissignlossign 变量我拥有的每一个网页。

有更好的方法吗?

最佳答案

您也可以使用 res.locals。当模板编译时,res.locals 中的任何内容都将在 Handlebars 上下文中可用。所以你可以像这样制作一些中间件:

app.use((req, res, next) => {
// get user from cookie, database, etc.
res.locals.user = user;
next();
});

如果您将此中间件放在其他路由之前,则用户对象将可用于每个响应。

然后在您的 Handlebars 模板中,您只需使用条件:

{{#if user}}
<a href=/logout>Logout</a>
{{else}}
<a href=/login>Login</a>
{{/if}}

关于javascript - 如何使用路线操纵导航栏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34248283/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com