【问题标题】:React and FLUX - Where would I implement server routines in my web app?React 和 FLUX - 我将在我的 Web 应用程序中的哪里实现服务器例程?
【发布时间】:2017-03-03 12:35:56
【问题描述】:

我最近开始学习 MERN 堆栈(MongoDB、Express、React、Node)和 FLUX。我已经使用它大约 2 周了,我真的很喜欢它。

我对 FLUX 的理解是依赖于以下步骤:

  1. Actions:这些是在短对象中包含一些数据和一些上下文(类型)的有效负载,这些是由一些辅助函数创建的 视图中活动的结果(大部分)。例如当用户 单击添加按钮,我们将创建一个包含 要添加的信息和上下文。所有动作都发送到 调度员。

  2. Dispatcher:Dispatcher 的工作方式类似于一个全局集线器,每当向其发送操作时,它都会触发注册到它的所有侦听器。

  3. Stores:stores 向 dispatcher 注册自己,当 dispatcher 广播动作到达时,stores 会更新自己,如果 该操作与这些商店相关,并发出一个更改事件 导致 UI 得到更新。

  4. 视图:视图是 html 呈现的组件。

在我创建的一个简单的待办事项列表应用程序中,每个步骤都有自己的目录。

我的问题是:

如果我想运行一个单独的例程,例如页面加载例程,它检查自上次更新记录以来是否已经过去一天,并根据该逻辑在服务器/数据库上执行某些操作。

例如,从页面加载调用此例程的最佳方法是什么?

感谢任何帮助或建议,在此先感谢您。

【问题讨论】:

  • 为什么要在 UI 中这样做?如果您需要检查数据库中的一些数据,然后更新数据库中的一些其他数据,那么整个过程可以留在服务器上,可能通过 cron 作业。
  • 啊,我明白了,这是有道理的。例如,从页面加载调用此服务器例程的最佳方法是什么? @SergiuParaschiv

标签: javascript node.js express reactjs flux


【解决方案1】:

在我看来,最好的方法是让您的服务器路由为应用程序提供页面还包含检查记录和进行更新的逻辑(这种检查/更新可能应该是一个异步过程,以免延迟应用程序的服务)。这样您就可以保留逻辑服务器端(这是可能的,因为它不依赖于您的用户“做”任何事情而不是请求页面)。

编辑:详细说明 我假设在你的服务器代码中有类似的东西:

app.get('/', function (req, res) {
    res.send('index');
});

这会变成这样:

app.get('/', function (req, res) {
    //make child process that calls someServerRoutine(req);

    res.send('index');
});

someServerRoutine(req){
    var record = getRecordBasedOnSomeRequestData(req);
    if(someCheckOnRecord(record)) doSomething();
}

在此处阅读有关节点子进程的更多信息:https://nodejs.org/api/child_process.html

EDIT2:重构代码

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-30
    • 2021-06-27
    • 1970-01-01
    • 1970-01-01
    • 2016-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多