ExpressJS将变量传递给JavaScript

时间:2012-02-13 22:25:12

标签: javascript node.js express

我完全迷失了;我正在使用NodeJS来获取JSON,我需要将变量传递给我的页面并让JavaScript使用数据。

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

这是我的Express代码(非常简单,用于测试目的);现在使用JADE我想收集这些我知道在页面上呈现的数据只是

p= myVar

但是我需要能够在JavaScript中收集这些数据(如果可能的话,在.js文件中),但现在只是在我尝试过的Alert框中显示变量

alert(#{myVar})

许多其他人如果有人可以帮助我们非常感激

5 个答案:

答案 0 :(得分:11)

尝试以下方法:

alert('!{myVar}')

如果不仅仅是一个字符串,那么对数据进行JSON编码是一个好主意。

alert('!{JSON.stringify(myVar)}')

答案 1 :(得分:11)

提摩太说:

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

如果您不喜欢在jade模板中编写HTML,也可以按如下方式完成:

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

更新:对于Express 4,使用script.代替script,以便将其呈现为javascript而非html。

答案 2 :(得分:3)

嗯,Javascript(和V8)有一个内置函数来从一个对象渲染JSON,而JSON恰好与Javascript语法兼容。

因此,最简单的方法是做你想做的事情:

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

而且,是的,您可以在Jade模板中使用HTML。

答案 3 :(得分:0)

我知道我参加派对有点晚了,但几个月前我实际上写了一个模块(JShare)来解决这个问题。看看:https://npmjs.org/package/jshare

答案 4 :(得分:-2)

你可以利用Now.js。它可以让您轻松地实时共享变量客户端/服务器端。

检查出来:http://www.nowjs.com/