【问题标题】:Is Flux a library which operates as the backend for React?Flux 是作为 React 后端运行的库吗?
【发布时间】:2026-01-09 18:15:05
【问题描述】:

我对 React 和 Flux 概念非常陌生,我非常困惑......

我来自 Sails.js 的背景,所以我真的不知道 React 是什么。

我打算用Sails.js作为一个restful api,与前端隔离) + React作为我的前端使用 restful 调用 + 也许 websockets 与sails 通信

但我看不出通量适合的地方!

【问题讨论】:

标签: javascript reactjs sails.js flux


【解决方案1】:

Flux 绝对不是使用 React 的必要条件,也不能作为 React 的“后端”运行。这只是构建使用 React 编写的应用程序的常见模式。这是有据可查的here

这只是一个客户端解决方案。它对任何特定的 Web 服务器没有硬性要求(但如果您安装了 NodeJS 会很方便,这样您就可以使用 Browserify 之类的东西来编译和打包脚本)。

从您的问题中不清楚您打算使用 Sails 的哪些部分。如果你想以 isomorphic 的方式使用 React(这意味着你将在 Web 服务器上运行 React 代码,然后它会被 React 客户端代码“附加”,而不需要重新渲染),那么如果您使用Waterline,数据管理可能会成为问题。但是,如果你只打算在客户端上使用 React,那么它可能更容易集成。

但是,再次强调,没有必要使用 Flux。您可以只遵循使用 React JS 关于数据流(父到子)的基本原则,并使用其他数据存储和同步库。 React 不那么固执己见。

此外,虽然 Facebook 有一个 Flux 实现 here,但您会在 here 找到数十个具有各种调整和增强功能的模式实现。您还会在同一页面上注意到还有许多其他可能有用的免费库。

【讨论】:

  • 感谢您的回答,我改变了我的问题以更好地描述我打算做什么:我计划使用 Sails.js(作为一个 restful api,与前端隔离)+ React(作为我的前端使用 restful 调用 + 可能是 websockets 与sails 通信)
  • 好的……答案中是否有一些未涵盖的内容? Flux 不必完全融入您的应用程序。这只是一些开发人员喜欢使用的选项。我发现它不适合某些应用。
【解决方案2】:

没有。

Flux 是一个design pattern,而不是一个框架或库。您可以在不使用 React 的情况下使用 Flux,反之亦然,尽管它们经过优化可以很好地相互配合。

Flux 应用程序具有三个主要部分:DispatcherStoresViews(不要与 Model-View-Controller 混淆)。 EventEmitter 通常用作Stores 的基础,React 作为Views 的基础。在其他地方不容易获得的 Flux 是 Dispatcher,尽管您可以自己编写一个。

Controllers 确实存在于 Flux 应用程序中,但它们是 controller-views -- Views 通常位于从存储中检索数据并将这些数据向下传递的层次结构的顶部给他们的孩子。此外,动作创建者(调度程序辅助方法)通常用于支持语义调度程序 API。

Flux 避开 MVC,支持单向数据流。当用户与 React 视图交互时,视图通过中心 DispatcherAction 传播到保存应用程序数据和业务逻辑的各种 Stores,从而更新所有受影响的视图。虽然您不需要 React 本身来实现这种模式,但它被设计为与 React 的声明式编程风格配合得特别好,这种风格允许商店发送更新而无需指定如何在状态之间转换视图。

更多信息请访问official Flux repo

【讨论】:

  • 所以一个 web 应用的典型场景是,1.一个 restful api 作为后端,2.flux+React 作为前端,对吗? Flux+react 只是前端正确吗?
  • @SudoPlz :Flux 的官方实现确实依赖于 Node.js,这意味着它不是纯粹的前端实现。另一方面,您应该能够完全在前端实现 Flux,使用纯前端等价物,如 github.com/Wolfy87/EventEmitter
  • @JohnSlegers-Flux 的官方实现是什么? Facebook 实现可通过 NPM 获得,但它不需要或不需要 NodeJS 在运行时执行。
  • @WiredPrairie :官方实现是github.com/facebook/flux 的实现,它依赖于 Node.js 的 EventEmitter 类。也许 NPM 可以在你背后为你安装(?),但 NPM 也不存在于大多数非 Node.js 系统上。
  • 无论如何,Flux 不是后端并没有改变。这纯粹是客户端。如果您要参考从哪里获得图像和大部分文本的答案,那也很棒。
最近更新 更多