ExpressJS Передача переменных в JavaScript - PullRequest
14 голосов
/ 14 февраля 2012

Я полностью потерян на этом; Я использую NodeJS для получения JSON, и мне нужно передать переменную на мою страницу, чтобы JavaScript использовал данные.

app.get('/test', function(req, res) {
    res.render('testPage', {
        myVar: 'My Data'
    });

Это мой экспресс-код (очень простой для тестирования); теперь, используя JADE, я хочу собрать эти данные, которые я знаю, чтобы отобразить на странице просто

p= myVar

Но мне нужно иметь возможность собирать эти данные в JavaScript (если возможно, в файле .js), а пока просто отображать переменную в окне предупреждения, которое я пробовал

alert(#{myVar})

И многие другие, если кто-то может помочь, будут высоко ценится

Ответы [ 5 ]

11 голосов
/ 28 июня 2012

Как сказал Тимофей:

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

Это также можно сделать следующим образом, если вы не любите писать HTML в шаблонах Jade:

script
  var myVar = !{JSON.stringify(myVar)};
  var myVar2 = !{JSON.stringify(myVar2)};

Обновление: для Express 4 используйте script. вместо script, чтобы оно отображалось как javascript вместо html.

11 голосов
/ 14 февраля 2012

Попробуйте выполнить следующее:

alert('!{myVar}')

Хорошей идеей будет JSON-кодирование данных, если это больше, чем просто строка.

alert('!{JSON.stringify(myVar)}')
3 голосов
/ 14 февраля 2012

Хорошо, в Javascript (и V8) есть встроенная функция для визуализации JSON из объекта, и JSON оказывается синтаптически совместимым с Javascript.

Так что самый простой способ сделать то, что вы пытаетесь сделать, будетбыть:

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

И, да, вы можете использовать HTML в шаблоне Jade.

0 голосов
/ 31 января 2013

Я знаю, что немного опоздал на вечеринку, но на самом деле я написал модуль (JShare) несколько месяцев назад, чтобы решить именно эту проблему.Проверьте это: https://npmjs.org/package/jshare

0 голосов
/ 14 февраля 2012

Вы можете использовать Now.js для этого. Он легко позволяет вам совместно использовать переменные клиент / сервер в режиме реального времени.

Проверьте это: http://www.nowjs.com/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...