如何在express + jade / pug中添加字符串化的脚本标记

时间:2016-11-08 12:11:01

标签: javascript express pug

我表达了使用哈巴狗作为观点。我的index.pug有以下内容:

script(type='text/javascript').
      window.__DATA__ = !{payload}

其中payload是json对象。它已经在express:

的渲染函数中进行了字符串化
res.render('index', {
    payload : JSON.stringify({
       "anExample": "<script></script>"
    })
})

当我的Json对象有</script>时,由于结束脚本标记,它会提前终止我的window.__DATA =函数。如何防止这会炸毁我的页面?这是Pug或Express或浏览器的限制吗?

2 个答案:

答案 0 :(得分:0)

你必须要打破&#34;分手&#34;包含脚本标记的字符串。

这样的事情应该有效:

"anExample": "<script></scr" + "ipt>"

这样,</scr" + "ipt>不会被解释为结束脚本标记。

答案 1 :(得分:0)

在询问解决方案后,使用stringify库而不是使用提供的JSON.stringify函数。

具体来说,我使用了npm模块js-stringify,它除了将json字符串化之外,还将<个字符更改为unicode。因此,然后可以将其插入像Pug这样的模板引擎中。然后帕格可以用!{my_stringified_json}取消它。因为它将unicode恢复到原来的状态,所以json最终成为'anExample: '<script></script'>而不是它的unicode等价物。