如何解决将nodejs对象存储在pug脚本标签中
我有一些对象需要渲染/存储在我的pug文件中,以便以后在客户端JS脚本中使用。
要将对象存储在脚本标签内,我将使用描述为here和here的方法:
NodeJS变量
const object = {
"someKey": {
"message":"this works"
}
}
res.render("index",{object});
请注意,我也使用双引号-您可以使用单引号,但我稍后会提及
script.
var object = JSON.parse("!{JSON.stringify(object)}")
然后在您的JavaScript脚本中的某处
alert(object.someKey.message)
详细了解帕格插值here。
问题:
对于我所有的用途,上面的示例都可以正常工作。当我有一个带有单引号的对象时出现问题:
const object = {
"someKey": {
"message":"this doesn't work"
}
}
Javascript不喜欢单引号的事实,因为它将单引号视为对象键/值的开始/结束:
从 Chrome控制台获取此信息
删除此单引号即可解决此问题。达到这一点时,JSON.parse()
函数将引发异常并停止加载任何和所有JS,因此,不再有其他函数起作用。 一种解决方法是将其放在页面的最后,但这不能解决问题。
问题:
如何用单引号将对象从NodeJS传递到pug(如上所示)?
更新
使用标准NodeJS发行的MCVE表达样板
https://github.com/cybex-dev/pug-single-quote-isse
设置说明:
git clone https://github.com/cybex-dev/pug-single-quote-isse
npm install
npm start
您应该看到期望看到一些控制台输出,我只是看到:
和“错误线”
解决方法
我无法通过以下方式重现您的工作示例:
script.
var object = JSON.parse("!{JSON.stringify(object)}")
但是对我有用的是:
script.
var object = !{JSON.stringify(object)};
console.log(object.someKey.message);
不带双引号:var object = !{JSON.stringify(object)}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。