Node.js 如何将对象发送到把手中的辅助对象?
学习把手和快车我正在尝试学习一种不用在渲染中构建就可以发送对象的方法。例如,如果我有:Node.js 如何将对象发送到把手中的辅助对象?,node.js,express,handlebars.js,handlebarshelper,Node.js,Express,Handlebars.js,Handlebarshelper,学习把手和快车我正在尝试学习一种不用在渲染中构建就可以发送对象的方法。例如,如果我有: const details = { version: process.env.npm_package_version, author: 'foobar' } 我可以从以下地址以部分形式将其发送到我的footer.hbs: app.get('/', (req, res) => { res.render('index', { details }) }) 但是,我正在寻找一种方法将
const details = {
version: process.env.npm_package_version,
author: 'foobar'
}
我可以从以下地址以部分形式将其发送到我的footer.hbs:
app.get('/', (req, res) => {
res.render('index', {
details
})
})
但是,我正在寻找一种方法将其发送到模板文件,而不是始终在渲染中,我在文档中阅读并尝试了:
// Define paths for Express config
const publicDir = path.join(__dirname, '../public')
const viewsPath = path.join(__dirname, '../templates/views')
const partialsPath = path.join(__dirname, '../templates/partials')
// Setup hbs engine and views location
app.set('view engine', 'hbs')
app.set('views', viewsPath)
hbs.registerPartials(partialsPath)
hbs.registerHelper('appDetails', () => {
const details = {
version: process.env.npm_package_version,
author: 'foobar'
}
return details
})
但是在footer.hbs文件的目录/partials
中,我尝试使用帮助程序:
<footer>
<p>Created by {{details.author}} | version: {{details.version}}</p>
</footer>
由{{details.author}}创建版本:{{details.version}
但它不起作用。我搜索了该网站,并阅读了:
在我的Node and Express应用程序中,是否有一种方法可以将数据发送到部分文件,而不必始终在
渲染中发送数据?车把助手有两种方法可以将数据添加到模板的渲染上下文中:
1) 通过直接改变模板的上下文或2)使用私有变量
例如:
以下帮助程序更新或添加数据点name
和newData
,并使用数据选项传递私有变量
Handlebars.registerHelper('datainjection', function(context, options) {
this.name = "Bob";
this.newData = "Updated"
return context.fn(this, { data: {private:"pirate"} });
});
在调用模板中的{{{{datainjection}{{/datainjection}}
块之前,{{name}
将被设置为传递给渲染函数的任何值,但是{name}
块内或之后出现的每一个{datainjection}{/datainjection}
块都将使用更新后的值,即“Bob”在这种情况下
我们正在传递的私有变量只能在{{{datainjection}{{/datainjection}}块中使用“@”装饰符进行访问
例如:
{{#datainjection}}{{@private}}{{/datainjection}}
将使字符串变为“海盗”