【发布时间】:2020-09-13 07:43:21
【问题描述】:
我需要在我的 pug 文件中渲染/存储一些对象,以便以后在客户端 JS 脚本中使用。
要将对象存储在脚本标签中,我会使用here 和here 描述的方法:
NodeJS 变量
const object = {
"someKey": {
"message":"this works"
}
}
res.render("index", {object});
pug(文件中的某处 - 注意脚本标记后的 .)
还要注意我使用双引号 - 你可以使用单引号,但我稍后会提到这一点
script.
var object = JSON.parse("!{JSON.stringify(object)}")
然后在你的 javascript 脚本中的某个地方
alert(object.someKey.message)
阅读有关 Pug 插值的更多信息here。
问题:
对于我的所有用途,上面的示例都可以正常工作。当我有一个内部带有单引号的对象时,问题就出现了:
const object = {
"someKey": {
"message":"this doesn't work"
}
}
Javascript 不喜欢单引号这一事实,因为它将单引号视为对象键/值的开始/结束:
删除这个单引号解决了这个问题。当达到这一点时,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
你应该看到期望看到一些控制台输出,我只是看到:
和“错误线”
【问题讨论】:
-
@Graham nope - 看看更新
标签: javascript node.js express pug