将数据从 Node/Express 传递到前端 Javascript

Pass Data From Node/Express to Front-End Javascript

我不确定这究竟是如何工作的,而且我无法通过搜索找到我的答案。我正在使用节点和快速服务器,并且一直在毫无问题地将数据传递到我的前端 ejs。现在,我正在尝试在我的前端中实现 charts.js,这要求数据位于前端 javascript 文件中。我知道要将数据传递到我的 ejs 文件,我使用这样的东西:

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

为了显示 ejs 文件中的数据,我使用

<%= data %> 

现在,我想做的基本上是同一件事,但我不想将数据传递到 ejs 文件,而是想将它传递到 javascript 文件,同时仍然显示 ejs文件。现在,我似乎无法弄清楚如何将我的数据保存在快速服务器中,并将其返回到前端 javascript 文件中。我正在寻找的流程是这样的:

在节点中:

data = []:
res.render("dashboard", {data: data});

然后渲染 ejs 文件并将数据传递到前端 javascript 文件中,该文件在 ejs 文件中使用:

let data = <%= (data array passed from the node server here) %>

当然,这不是编写代码的正确方法,但这是我试图实现的基本逻辑。

我相信这很简单,但我似乎无法在我的上下文中找到答案。有什么资源可以让我学会做我想做的事吗?谢谢。

您不能同时使用 HTML 文档和单独的 JavaScript 文件来响应单个请求。

因此您需要:

  • 将数据存储在某个地方,并在单独的端点中提供一些生成的 JavaScript 并有一种机制可以识别 在请求时提供哪些 数据制成。 (注意:这太复杂了。不要这样做。)
  • 在 HTML 文档中的 <script> 元素内生成 JavaScript 内联。 (您需要将数据正确转义为 JS,以确保您不受 XSS 的影响)。
  • 将数据输出到 HTML 文档中(例如带有 data-* 属性或 <meta> 元素)并使用静态 JavaScript.
  • 读取它
  • 同样,使用单独的端点:使用其中的数据提供 JSON 并使用静态 JS 文件中的 Ajax 读取数据。 (同样,您需要一种方法来确定为该特定请求发送哪些数据)。