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

How to use JSON sent via Express res.render in a public JS file

本文关键字:res Express render JSON JS 文件      更新时间:2023-09-26

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

app.get请求中,我从 express 调用外部 api,然后使用 res.render 发送 jade 文件和 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。但是,我更愿意在一个名为scripts的文件中编写和使用这个JavaScript.js该文件是从Jade文件中引用的。

script(src='scripts.js')

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

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

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

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

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