web-dev-qa-db-ja.com

ノード+エクスプレス+ヒスイでオブジェクトをクライアントに渡しますか?

サーバーにかなり重いクエリがあり、新しいページがレンダリングされます。クエリの結果の一部を(オブジェクトのjavascript配列として)クライアントに渡したいと思います。これは基本的には同じなので、後で同じコンテンツを取得するために別のJSONクエリを実行する必要はありません(ほとんど静的です)。データは最終的には有用になりますが、最初はそうではないので、ドキュメントに直接入れませんでした。

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

データはオブジェクトの配列であり、一部のみが最初に使用されます。データ全体または一部のサブセット(状況に応じて)を渡します。私のjaは通常のjaのように見えますが、次のようなものを含めたいと思います

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

しかし、これは機能しません(オブジェクトの配列です)。

42
killermonkeys

そのようなJSオブジェクトをインライン化することはできませんが、JSON.stringify前:

<script type="text/javascript">
  var data = !{JSON.stringify(data)};
</script>
89
Adrien