在 Javascript 逻辑中访问 EJS 变量

新手上路,请多包涵

我正在开发一个 Node.js 应用程序(这是一个游戏)。在这种情况下,我设置了一些代码,以便当一个人访问索引并选择一个房间时,他会被重定向到正确的房间。

现在,Express v2.5.8 正在这样做:

 server.get("/room/:name/:roomId, function (req, res) {
  game = ~databaseLookup~
  res.render("board", { gameState : game.gameState });
}

在 board.ejs 中,我可以使用如下代码访问 gameState 方式:

 <% if (gameState) { %>
  <h2>I have a game state!</h2>
<% } %>

有没有办法将其导入我的 JavaScript 逻辑?我希望能够做类似 var gs = ~import ejs gameState~ 的事情,然后能够用它做任何我想做的事——访问它的变量,将它打印到控制台进行验证。最后,我想用这个 gameState 做的是正确显示棋盘,为此我需要做一些事情,比如访问棋子的位置,然后在屏幕上正确显示它们。

谢谢!

原文由 Catherine Hwang 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 291
2 个回答

您可以直接将 gameState 变量注入到页面上的 javascript 中。

 <% if (gameState) { %>
     <h2>I have a game state!</h2>
     <script>
        var clientGameState = <%= gameState %>
     </script>
<% } %>

另一种选择可能是在页面加载后对服务器进行 AJAX 回调,返回 gameState JSON,并将 clientGameState 设置为 JSON 响应。

您可能对此也感兴趣: 如何在 Node.js 和浏览器之间共享代码?

原文由 Nick Hagianis 发布,翻译遵循 CC BY-SA 3.0 许可协议

我有同样的问题。我不仅需要将数据用于渲染页面,还需要在我的 js 脚本中使用这些数据。因为页面渲染的时候只是字符串,所以得把数据转成字符串,然后在js中再解析一遍。在我的例子中,我的数据是一个 JSON 数组,所以:

 <script>
  var test = '<%- JSON.stringify(sampleJsonData) %>'; // test is now a valid js object
</script>

单引号不能与 stringify 的双引号混用。同样来自 ejs 文档:

“<%- 将未转义的值输出到模板中”

数组也可以这样做。只需连接数组然后再次拆分。

原文由 Arootin Aghazaryan 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏