当我将变量传递给jade时,看起来它正常工作,例如#{myvar}可以工作但是,当我尝试在Jade的脚本块中调用它时,它根本不加载。在我的脚本块中执行typeof(myvar)时,它表示它在某一点未定义但现在它没有返回任何内容。我的代码看起来像这样:
- typeof(rm120[0].description) <---- Returns string
div#change !{rm120[0].description} <----- Works perfectly fine
div#test
script.
change.innerHTML = "test code" <------ Works perfectly fine
test.innerHTML = rm120[0].description
test.innerHTML = typeof(rm120)
test.innerHTML = typeof(locals.rm120)
脚本中第一个之后的所有行。似乎永远不会加载或只是被忽略,我非常困惑为什么我不能使用我从我的脚本块中的node.js文件传递的对象。任何帮助将不胜感激!
答案 0 :(得分:0)
Pug中的script
标记呈现发送到客户端的文本作为客户端Javascript运行。由于服务器端变量不存在于客户端上,因此需要以某种方式将它们传递给客户端。
两种可能的方法是在Pug中呈现变量或通过AJAX调用传递数据。
将变量渲染到Javascript中是传递数据的最简单方法,但我倾向于将其限制为JS App所需的非常简单的引导数据。
script.
let rm120 = !{JSON.stringify(rm120)}
console.log(rm210)
使用API端点传递JSON对象更加复杂,因为需要有服务器端点并且您开始处理异步请求。当应用程序开始传递更多数据或更复杂的数据时,它就是一种更具伸缩性的共享方法。
script.
fetch("/api/v1/rm120")
.then(response => response.blob())
.then(body => {
console.log(body)
})
.catch(err => console.log(err))
答案 1 :(得分:0)
我假设您正在尝试在html文件中插入rm120[0].description
的实际值,一旦将其传递到客户端,您希望将其作为脚本运行。在这种情况下,您需要使用#{}或!{}。
如果你不这样做,那么“rm120 [0] .description”这个词就会写在你的html文件上。当它运行客户端时,可能不会有rm120。