【问题标题】:Passing Variable from Node.js Server to Client将变量从 Node.js 服务器传递到客户端
【发布时间】:2012-03-29 04:40:38
【问题描述】:

在我的 node.js 服务器上,我有以下代码:

//Generate a token
var token = capability.generateToken();

//Serve the page
var html = fs.readFileSync('learn.htm').toString();
response.writeHead(200, {"Content-Type": "text/html"});
response.end(html);
}

现在在客户端(在 learn.htm 中)我想访问令牌变量。我的问题是,如何在响应中将变量传递给客户端?一定有一种简单的方法可以做到这一点,但我正在努力解决它。

【问题讨论】:

    标签: node.js


    【解决方案1】:

    您应该考虑为您的 HTML 使用模板语言。有几种可用的,只需搜索node.js模板语言或使用npm:

    npm search templates
    

    编辑:一些流行的是jadeejshogan.js

    【讨论】:

    【解决方案2】:

    您可以向设置变量的客户端发送一些 JavaScript。或者您可以将其存储在 data- 属性中,例如的 body 标签 (<body data-token="...">) 然后通过 $('body').data('token') 访问它,以防你在客户端有 jQuery。

    如果您需要将其用于表单,您也可以将其存储在隐藏的输入字段中。

    【讨论】:

    • 如何将 data 属性附加到 body 标签?在客户端我会使用 jquery,但我不确定如何从服务器端执行此操作。
    • 你需要使用某种模板引擎;现在你只读取一个静态文件,没有任何适当的方法来替换其中的值。
    • 好的。我试图推迟学习模板引擎,直到我自己更精通节点。也许这只是绝对需要模板引擎的用例之一。
    • 你有一个纯字符串,所以你总是可以.replace('{TOKEN}', token) 然后把{TOKEN} 放在你的HTML文件中。对于单个值实际上很好,但如果您需要更多,最好使用模板引擎。
    【解决方案3】:

    输入类似:

    <input type="hidden" value="{{TOKEN}}"> 
    

    在您的 HTML 中,然后在每个请求中将 {{TOKEN}} 字符串替换为令牌。

    然后像这样使用JS:

    var token = $("input#csrf_token").val();
    

    获取客户端脚本中的值。

    编辑:我自己没有使用过,但是 nowjs (http://nowjs.com/) 是一种更通用的将服务器变量发送到客户端的方法。传递一个简单的令牌可能不是您想要的,但它可能很有趣。

    【讨论】:

    • 谢谢。你的答案也有效。为 nowjs 提示 +1。我去看看。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-14
    • 1970-01-01
    • 2016-06-17
    • 1970-01-01
    • 1970-01-01
    • 2018-04-01
    相关资源
    最近更新 更多