【问题标题】:display data from node module in real time using react使用反应实时显示来自节点模块的数据
【发布时间】:2015-09-12 23:29:21
【问题描述】:

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

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

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

我使用 express 和车把,我目前显示的数据如下:

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

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

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

我一直在研究 React,但我真的不明白如何设置它。我阅读了一些关于反应模块(nom install 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}}}。数据显示了,但还没有实时更新,需要刷新页面才能显示数据的变化。

有什么想法吗?

【问题讨论】:

  • 你目前使用哪些 js 库?
  • 除了那个节点、快递发电机和车把之外别无他物。对任何能给我想要的功能的东西开放。
  • 这个问题非常广泛。您正在询问如何在服务器和客户端之间同步模块的属性,以及如何在没有任何代码的情况下在反应中呈现变化的值,以及如何检测对此属性的更改。
  • 我的意思是我不知道使用什么代码来执行此功能。我愿意添加完成工作所需的任何内容。

标签: javascript node.js reactjs


【解决方案1】:

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

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

编辑:

你需要两件事:

  1. 一种在客户中管理模型的方法,我建议您看看 Flux 或 Backbone
  2. 一种将到达服务器的新数据实时传送到客户端的方法,为此您将使用 socket.io

[SERVER---(new_data)---socket.io_server_side] --------> [CLIENT ---socket.io_client_side--->更新你的模型---更新你的页面]

【讨论】:

  • socket.io 会自己工作吗?我不需要骨干或助焊剂?
  • 您不需要主干或助焊剂,但使用助焊剂您的代码会更干净。我不知道骨干,所以不能说它是如何工作的。
猜你喜欢
  • 2017-11-26
  • 2014-08-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-18
  • 2019-11-23
  • 1970-01-01
相关资源
最近更新 更多