javascript - Node.js 和 express + hbs - 将变量传递给模板时意外的标识符

标签 javascript node.js express handlebars.js

我有一个 node express 应用程序,我试图在呈现我的 index.hbs 文件时传递一个变量,如下所示:

<!DOCTYPE html>
<html>
<body>
    Hello.

    <a href="/auth/facebook">Login with Facebook</a>

    {{req}} <!-- this works fine(ish) -->

    <script>
    var request = {{req}}; // This throws an error
    console.log(request);
    </script>
</body>
</html>

{{req}} 模板变量按预期输出为 [object Object],但是当尝试通过 javascript 传递它时,我得到 控制台中抛出意外的标识符。我尝试修改为使用三大括号而不是双大括号,但这似乎没有什么区别。

使用 javascript 设置模板变量的正确方法是什么?

最佳答案

这是因为您的模板引擎仅将 {{req}} 替换为字符串。

如果你想在你的 javascript 标签中使用 {{req}}。使用 JSON.stringify(req) 将模板引擎作为参数传递,并在您的 javascript 标记中使用三重“triple-stash” {{{req}}} 来解析字符串转化为对象

关于 triple-stash 可以找到文档 http://handlebarsjs.com/在 HTML 转义部分

希望对你有帮助

编辑:

在这里找到类似的答案 Passing an object to client in node/express + ejs?

关于javascript - Node.js 和 express + hbs - 将变量传递给模板时意外的标识符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48606755/

相关文章:

javascript - 如何防止空格只进入数据库?

javascript - 涉及 Webgrid 的 Ajax 帮助

javascript - 无法在 Express.JS 中使用 nginx 的路由

javascript - Node.js 和 Express.js 中通过向前端请求数据来创建动态链接

node.js - 无法使用 app.use 提供静态 html 文件

node.js - 如何在所有文件的 express.js 4.x 上启用 CORS?

javascript - 使用 Parse.com 在查询中保存对象仅限于第一行?

javascript - 文本在小窗口中加载太大

node.js - 在 OpenShift 上运行 peerjs-server 返回 503 服务不可用

node.js - node.js 中的延迟加载