Passer des objets au client dans node + express + jade?

J'ai une requête assez lourde sur le serveur qui entraîne un nouveau rendu de page, et je voudrais transmettre certains des résultats de la requête au client (en tant que tableau javascript d'objets). C'est fondamentalement donc je n'ai pas besoin de faire une requête JSON séparée plus tard pour obtenir le même contenu (qui est principalement statique). Les données seront utiles éventuellement, mais pas au départ, donc je ne les ai pas mises directement dans le document.

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

Data est un tableau d'objets et seuls certains sont initialement utiliser. Je voudrais passer l'intégralité des données ou certains sous-ensembles (en fonction de la situation). Mon jade ressemble à du jade normal, mais je voudrais inclure quelque chose comme

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

Mais cela ne fonctionne pas (c'est un tableau d'objets).

40
demandé sur killermonkeys 2011-10-07 04:00:27

1 réponses

Vous ne pouvez pas intégrer un objet JS comme ça, mais vous pouvez le JSON.stringify avant:

<script type="text/javascript">
  var data = !{JSON.stringify(data)};
</script>
87
répondu Adrien 2011-10-07 11:49:11