gpt4 book ai didi

node.js - 快速 Handlebars : Getting current URL query and passing query to a template?

转载 作者:搜寻专家 更新时间:2023-11-01 00:32:15 24 4
gpt4 key购买 nike

目前我有Express3-Handlebars设置,我试图获取当前 URL,提取 GET 查询,然后将它传递到辅助函数中的 Handlebars 模板。我无法找到一种方法来将发送到我的 handlebars 助手的请求传递给我,因为我似乎只能访问我的路由中的当前 URL。

app.get('/somewhere', function(req, res) {
console.log(req.originalUrl); <-- prints the URL I am at such as somewhere?country=US
res.render('somewhere-home', {
somewhere-info: global.somewhere-info
globals: global.globals,
css:['/media/css/somewhere.css'
],
js:[
'/media/js/somewhere.js'
]
});
});

我希望编写一个可以利用 Node 的 url 库并将 URL 传递给 Handlebars 的辅助函数

helpers: {
currentURL: function() {
console.log(url.parse(req.originalUrl, true));
return url.parse(req.originalUrl, true);
},

然后我可以在我的 handlebars 文件中以某种方式访问​​它。我希望我的模板能够智能地打印一些东西,但如果我收到某个请求,则打印另一件事。所以像

{{#if currentURL.query == 'US' }}
<h1>Welcome to US!</h1>
{{else}}
<h1>Welcome to wherever the hell you are from!</h1>
{{/if}}

不确定我是否以错误的方式处理此问题。我读了 Express's app.get documentation您可以处理某些 GET 请求并根据它们呈现特定页面,但我真的只想更改我的 handlebars 模板文件中的一件小事,所以我希望我不必为我想要的每个 GET 请求创建多个 handlebars 模板处理。或许这才是正确的做法?

最佳答案

所以我想通了。很傻。我在我的模板中定义了一个范围,因此它只能访问 info 变量。

{{#info}}
<h1>{{header}}</h1>
...

{{/info}}

req 变量发送一个query 字段供我使用,所以我最终根本不需要辅助函数。更多可以查看here all the way at the bottom .

app.get('/info', function(req, res) {
//set context of handlebars
res.render('info', {
info : {
header : "View Title"
},
query : req.query
}
}

由于 Handlebars 的工作方式,您可以简单地向渲染函数添加上下文。然后它将可用。

但让我感到困惑的是示波器,所以在我的 handelbars 模板中,我只是简单地打开和关闭示波器。

{{#info}}
<h1>{{header}}</h1>
...
{{/info}}
{{#if query.country}}
<h2>Welcome to the {{query.country}}!</h2>
{{else}}
<h2>Welcome!</h2>
{{/if}}
{{#info}}
... continue
{{/info}}

希望这对您有所帮助。

关于node.js - 快速 Handlebars : Getting current URL query and passing query to a template?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26570359/

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