json-将对象传递给节点+ express +玉中的客户端?

我在服务器上有一个非常重量级的查询,可以生成新的页面渲染,并且我希望将查询的一些结果传递给客户端(作为对象的javascript数组)。 基本上是这样,因此我不必稍后再进行单独的JSON查询即可获得相同的内容(通常是静态的)。 数据最终将是有用的,但最初没有用,因此我没有将其直接放入文档中。

app.get('/expensiveCall', function(req, res) {
    // do expensive call
    var data = veryExpensiveFunction();
    res.render('expensiveCall.jade', {
        locals: {
                data: data,
                }
        });
    });
});

数据是一个对象数组,最初只使用一些对象。 我想传递整个数据或传递一些子集(取决于情况)。 我的玉看起来像普通的玉,但我想加入一些类似的东西

<script type="text/javascript">
var data = #{data};
</script>

但这不起作用(它是一个对象数组)。

killermonkeys asked 2020-08-09T18:56:57Z
1个解决方案
89 votes

您不能内联这样的JS对象,但您可以在JSON.stringify之前插入它:

<script type="text/javascript">
  var data = !{JSON.stringify(data)};
</script>
Adrien answered 2020-08-09T18:57:02Z
translate from https://stackoverflow.com:/questions/7681821/passing-objects-to-client-in-node-express-jade