我对React和Flux概念很新,而且我很困惑......
我来自Sails.js的背景,所以我无法说出React是什么。
我计划使用Sails.js(作为一个宁静的api,与前端隔离) + React(作为我的前端使用restful调用+也许websockets与sails通信)
但我没有看到助焊剂适合的地方!
答案 0 :(得分:4)
没有
Flux是design pattern,而不是框架或库。您可以在不使用React的情况下使用Flux,反之亦然,尽管它们经过优化可以很好地相互协作。
Flux应用程序有三个主要部分:Dispatcher
,Stores
和Views
(不要与Model-View-Controller混淆)。 EventEmitter通常用作Stores
和React的基础,作为Views
的基础。其他地方不易获得的一个Flux是Dispatcher,但如果你愿意,你可以自己写一个。
Controllers
确实存在于Flux应用程序中,但它们是控制器视图 - Views
经常位于层次结构顶部,用于从商店检索数据将这些数据传递给他们的孩子。此外,动作创建者 - 调度程序帮助程序方法 - 通常用于支持语义分派器API。
Flux避开MVC而支持单向数据流。当用户与React视图交互时,视图会将Action
通过中心Dispatcher
传播到包含应用程序数据和业务逻辑的各种Stores
,所有受影响的观点。虽然你不需要React来实现这个模式,但它的设计特别适用于React的声明性编程风格,它允许商店发送更新而不指定如何在状态之间转换视图。 / p>
可以在official Flux repo找到更多信息。
答案 1 :(得分:3)
Flux绝对不是使用React的要求,也不是React的“后端”。它只是构建使用React编写的应用程序的常见模式。这是有据可查的here。
这只是一个客户端解决方案。它对任何特定的Web服务器都没有硬性要求(但是如果你安装了NodeJS就很方便,你可以使用类似Browserify的东西来编译和打包脚本)。
从您的问题中不清楚您计划使用哪些Sails部分。如果你想以 isomorphic 的方式使用React(意味着你在Web服务器上运行React代码,然后由React客户端代码“附加”,而不重新渲染),那么如果您使用Waterline,数据管理可能会成为一个问题。但是,如果您只是在客户端上使用React,那么它可能更容易集成。
但是,再次,没有必要使用Flux。您可以遵循使用React JS关于数据流(父对子)的基本原则,并使用其他数据存储和同步库。 React并不是那种看法。
此外,虽然Facebook有一个Flux实现here,但您会发现该模式的几十种实现,其中包含here的各种调整和增强功能。您还会在同一页面上注意到有许多其他可能有用的免费库。