Flux 是作为 React 后端运行的库吗?

Is Flux a library which operates as the backend for React?

我对 React 和 Flux 概念还很陌生,我一头雾水..

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

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

但我看不出助焊剂适合什么地方!

没有

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

Flux 应用程序包含三个主要部分:DispatcherStoresViews(不要与 Model-View-Controller). EventEmitter is typically used as a basis for Stores and React as a basis for Views. The one piece of Flux not readily available elsewhere is the Dispatcher 混淆,尽管您可以自己编写一个如果你愿意。

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

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

可以在 official Flux repo 找到更多信息。

Flux 绝对不是使用 React 的必要条件,并且不作为 React 的 "back-end"。它只是构建用 React 编写的应用程序的常见模式。它有据可查 here

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

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

但是,再次声明,没有必要使用 Flux。您可以遵循使用 React JS 的基本原则来处理数据流(父到子),并使用其他数据存储和同步库。 React 不是那样自以为是。

此外,虽然 Facebook 有一个 Flux 实现 here, you'll find dozens of implementations of the pattern with various tweaks and enhancements located here。您还会在同一页面上注意到,还有许多其他可能有用的免费库。