Javascript 字符串化包含标记的JSON

Javascript 字符串化包含标记的JSON,javascript,pug,Javascript,Pug,我试图通过字符串化初始状态并将其存储在全局变量中,将初始状态从服务器传递到客户端。下面是我正在做的事情的简化版本 // home.tsx res.render('home', { appState: {script: '<script></script>'} }); // home.pug doctype html html head script. window.__initialState__ = !{JSON.str

我试图通过字符串化初始状态并将其存储在全局变量中,将初始状态从服务器传递到客户端。下面是我正在做的事情的简化版本

// home.tsx
res.render('home', { appState: {script: '<script></script>'} });

// home.pug
doctype html
html
    head
        script.
            window.__initialState__ = !{JSON.stringify(appState)};
    body
        #root
不幸的是,结果是这样的

<script>window.__initialState__ = {"script":"<script></script>

这是无效的Javascript。我的最终目标是将服务器的appState对象分配给Windows。\uuuuInitialState。\uuuu。

代码的第一部分非常混乱。但是,作为一般规则,您应该始终将从服务器传递到客户端的任何HTML编码为字符串

因此,您需要更改生成以下行的服务器代码部分:

let scriptObject = {script: '<script></script>'};
假设您使用的是pug和node.js,那么:

var htmlencode = require('htmlencode');
let scriptObject = {script: htmlencode.htmlEncode('<script></script>')};

我很困惑。代码的第一部分是什么?这应该是HTML吗?它是由服务器代码生成的吗?我更新了这个问题。我尝试对其进行编码,但uu initialState uu.script不等于。在使用它们之前,我必须遍历_initialState _的所有属性并取消它们的scape。