【问题标题】:How to use JSON sent via Express res.render in a public JS file如何在公共 JS 文件中使用通过 Express res.render 发送的 JSON
【发布时间】:2015-02-11 19:42:45
【问题描述】:

提前感谢您的帮助。我有一个问题一直困扰着我,我相信它非常简单。

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

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

但是,我终其一生都无法弄清楚如何从输出的 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}

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

script(src='scripts.js')

我无法访问这些数据 - 我尝试了多种语法来尝试让它工作,但失败了。

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

【问题讨论】:

  • 您想在发送给客户端之前操作 data 吗?并从外部 javascript 将其内联写入 .jade 文件?
  • 是的,没错。谢谢。
  • @Beau 有关如何执行此操作的任何更新?
  • 仍然没有答案,我现在也有同样的问题,哈哈

标签: javascript json express pug


【解决方案1】:

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

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

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

【讨论】:

  • 他明确表示他可以在jade文件中的script标签内执行此操作,但是如果您执行script src='test.js'并且他想访问test.js中的变量怎么办跨度>
猜你喜欢
  • 1970-01-01
  • 2013-06-14
  • 2014-09-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-05
  • 2015-01-06
  • 2019-07-02
相关资源
最近更新 更多