使用react实时显示来自节点模块的数据

时间:2015-09-12 13:25:49

标签: javascript node.js reactjs

我有一个导出对象的节点模块(数据)。此对象具有值更改的属性。

var data = require('data');
var count = data.count;

data.count正在改变它的值(让我们假装它是秒数)。

我使用快递和把手,我目前显示的数据如下:

var express = require('express');
var router = express.Router();

router.get('/', function(req, res, next) {
    res.render('index', { title: 'Home', data: count });
});

这样做需要刷新页面才能看到更新后的值。我的问题是:如何在不刷新页面的情况下实时显示计数值?

我一直在研究 React ,但我真的不明白如何设置它。我读了一些关于react模块的教程(nom install react),但没有太多关于如何使用它的文档。我理解react网站上的简易指南,但是在客户端上插入了反应脚本。

如果有人能指出我的方向很好,那就很棒。

谢谢。

更新

所以我安装了npm insatll reactnpm install babel并在react中创建了一个看起来像这样的组件(comp.jsx):

var React = require('react/addons');
var data = require('data');

var d = React.createClass({
    render: function() {
        return (
            <h1>{data.votes}</h1>
        );
    }
});

module.exports.Component = d;

我在我的路线文件中包含了这个组件,现在看起来像这样:

require('babel/register');
var React = require('react/addons');

var data = React.createFactory(require('comp.jsx').Component);

router.get('/', function(req, res, next) {
    var dataHtml = React.renderToString(data({}));
    res.render('index', { reactOutput: data });
});

数据显示在我的手柄模板中,如下所示:{{{reactOutput}}}。数据显示但仍未实时更新,必须刷新页面以显示数据更改。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

我会使用socketio http://socket.io/,每次你的服务器新数据你都会使用socketio将新数据发送给你的客户模型。

我建议你至少使用客户端模型,通量或主干

编辑:

你需要两件事:

  1. 一种管理客户模型的方法,我建议你看一下焊剂或主干
  2. 一种实时通信到服务器的新数据到客户端的方法,因为您将使用socket.io
  3. [SERVER ---(new_data)--- socket.io_server_side] --------&gt; [客户端--- socket.io_client_side ---&gt;更新您的模型---更新您的页面]