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

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


data.count正在更改其值(假装是秒数)。

我使用express和handlebars,并且当前显示如下数据:

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

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


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

我一直在研究React,但我不太了解如何设置它。我阅读了一些有关react模块(标称安装react)的教程,但是关于如何使用它的文档并不多。我了解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}}}。数据已显示,但仍未实时更新,必须刷新页面以显示数据更改。

有任何想法吗?

最佳答案

我将使用socketio http://socket.io/,每次服务器新数据时,将使用socketio将新数据发送到客户端模型。

我建议您至少在客户端,流量或主干上使用模型

编辑:

您需要两件事:


我建议您在客户中管理模型的一种方法,以了解流量或主干
一种实时将到达服务器的新数据传递给客户端的方法,为此,您将使用socket.io


[SERVER ---(new_data)--- socket.io_server_side] --------> [客户端--- socket.io_client_side->更新模型---更新页面]

09-20 13:38