如何在Node.js中将数据从后端传递到前端

时间:2018-12-18 11:57:28

标签: javascript node.js express pug

我有一个节点项目,该项目使用PUG / Jade文件渲染网页。每分钟执行一次JS文件,以更新Redis数据库,我希望GUI也每分钟更新一次,以反映所有更改。

下面是当前如何传递数据的简化版本:

  1. 用户访问网址.../home
  2. routes.js执行router.get('/home', controller.renderHome)
  3. controller.js执行以下操作:

    function getData(){
         return { some_data } 
    }
    
    renderHome: async (req, res) => {
        res.render('home', getDetails())
    }
    

然后我可以访问.pug文件中的数据。

使用此方法,我只能在访问路由(即刷新页面)时获取更新的数据。但是数据用于绘制图形,我想每分钟更新一次。

我应该如何将数据传递到GUI,这将使我能够每分钟简单地重新绘制图形,而不是每次都强制浏览器重新加载(我猜这是一种不好的做法)

2 个答案:

答案 0 :(得分:1)

您有两个选择:

  1. 使用WebSocket
  2. 公开一个API,您的客户端JavaScript可以按指定的时间间隔轮询该API以进行更新。

WebSocket可能是最好的选择:https://socket.io/

答案 1 :(得分:0)

使用Socket.io https://socket.io/,然后在前端使用cd sts-3.9.6/pivotal-tc-server/instances ln -s $HOME/servers/tc_server . 函数每分钟向后端发出一个socket.io事件。