我有一个导出对象的节点模块(数据)。此对象具有值更改的属性。
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 react
和npm 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}}}
。数据显示但仍未实时更新,必须刷新页面以显示数据更改。
有什么想法吗?
答案 0 :(得分:1)
我会使用socketio http://socket.io/,每次你的服务器新数据你都会使用socketio将新数据发送给你的客户模型。
我建议你至少使用客户端模型,通量或主干
编辑:
你需要两件事:
[SERVER ---(new_data)--- socket.io_server_side] --------&gt; [客户端--- socket.io_client_side ---&gt;更新您的模型---更新您的页面]