Передача объектов клиенту в узле + экспресс + нефрит? - PullRequest
42 голосов
/ 07 октября 2011

У меня довольно тяжелый запрос на сервере, который приводит к отображению новой страницы, и я хотел бы передать некоторые результаты запроса клиенту (в виде массива объектов 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>

, но это не работает (это массив объектов).

1 Ответ

89 голосов
/ 07 октября 2011

Вы не можете встроить JS-объект таким образом, но вы можете JSON.stringify сделать это раньше:

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