如何在公共JS文件中使用通过Express res.render发送的JSON

时间:2014-12-13 02:04:02

标签: javascript json express pug

提前感谢您的帮助。我有一个困扰我的问题,我确信这很荒谬。

app.get请求中,我从express调用外部api,然后使用res.render发送jade文件和json。

我可以在jade文件中成功操作这些数据,并直接在jade文件中编写JavaScript。

但是,我不能为我的生活弄清楚如何从输出的HTML引用的JavaScript文件中操作这个JSON。

例如:

router.get('/dashboard', function (req, res, next) {

  // Call the external api and get data.
  // Parse the data

  res.render('dashboard', {
      data: data
  });

});

然后,dashboard.jade文件使用这些数据来做很酷的事情。

if #{data.isNew} === true {do cool stuff}

我还编写了一些JavaScript,将这些数据直接用于dashboard.jade文件本身。但是,我更愿意在一个名为scripts.js的文件中编写和使用这个JavaScript,该文件是从Jade文件中引用的。

script(src='scripts.js')

我无法访问这些数据 - 我尝试了多种语法来尝试让它工作但是很难用。

我的问题是,我如何使用已经res.rendered()的JSON到从该渲染视图引用的JS文件中的视图?

1 个答案:

答案 0 :(得分:0)

您需要在dashboard.jade中声明一个变量,然后使用interpolation将数据输出为字符串:

 script.
   var myData = #{JSON.stringify(data)};

Jade引擎会将其输出为有效字符串,然后供该页面上加载的任何脚本使用。