【问题标题】:Access server variable in client side (node.js + express)在客户端访问服务器变量(node.js + express)
【发布时间】:2016-03-02 21:31:18
【问题描述】:

我有一个简单的 html 页面,由 express 在 node.js 服务器上提供服务,在客户端 javascript 中,我想访问一些服务器端变量。我尝试在谷歌上搜索解决方案,但在不使用某种模板引擎的情况下没有看到直接的解决方案。

那么,如果我需要从同一主机提供的客户端 JS 访问服务器上的变量,我需要做什么?

【问题讨论】:

  • 将json输出到script标签中的文档,或者对数据进行AJAX请求。
  • 就像@elclanrs 所说,在文档中的脚本标签之间输出 javascript,使用 AJAX 或 - 作为第三种选择 - 使用 socket.io 进行实时通信。
  • 个人而言,websockets 是这里的必经之路。我讨厌有一个快速路由设置来逐字返回一个变量。能够随时发送数据比所有那些 xhr 调用要容易得多。
  • 使用某种模板来访问res.locals,无论是 EJS、Jade 还是您自己创建的东西,通常都是一件好事,并且可以在页面加载时轻松将数据传输到 HTML,而无需任何额外的请求。

标签: javascript node.js express


【解决方案1】:

要访问客户端上的变量,您需要在脚本标签内公开它,有一些节点模块可以帮助您(例如:express-state)https://www.npmjs.com/package/express-state,但是您'将需要一个模板引擎来生成它所需的 html。使用 express 时,您可以使用各种模板引擎。如果您直接使用开箱即用的 express 生成器,它应该带有 jam,您可以在生成器上使用不同的选项来使用其他模板引擎。请参阅此处了解快速生成器选项http://expressjs.com/en/starter/generator.html

【讨论】:

    【解决方案2】:

    创建一个 API 来公开你的变量:

    app.get('/myvar', function(req, res){
      res.send(varYouWantToSend);
     });
    

    然后在客户端使用http GET request 调用该API。在本例中,API 的 url 为 www.yoursite.com/myvar

    【讨论】:

      【解决方案3】:

      你可以尝试使用这个库:

      https://github.com/siriusastrebe/syc

      如果您想自己实现,请查看Ajax。 Jquery 有一个非常简单的 ajax 包装器 (http://api.jquery.com/jquery.ajax/)。当然你需要在服务器上打开相应的url来返回/设置值。

      【讨论】:

        【解决方案4】:

        试试socket.iohttp://socket.io/,它在现代浏览器上使用websockets,并在旧浏览器上优雅地降级为AJAX等旧技术,让用户体验保持不变。

        在此处查看详细信息Web Socket support in Node.js/Socket.io for older browser

        【讨论】:

          猜你喜欢
          • 2014-03-24
          • 2015-10-21
          • 1970-01-01
          • 2016-04-05
          • 1970-01-01
          • 1970-01-01
          • 2019-03-15
          • 2015-03-25
          • 1970-01-01
          相关资源
          最近更新 更多