【发布时间】:2016-10-28 10:32:57
【问题描述】:
我已经阅读了许多基于 redux 和 relay 的文章/文档,但我仍然对这两个库有何不同感到困惑?
这两个库的优缺点是什么?
GraphQL 在中继中的确切作用是什么?
哪个库更适合 CRM/ERP 等企业数据驱动的应用程序?
【问题讨论】:
我已经阅读了许多基于 redux 和 relay 的文章/文档,但我仍然对这两个库有何不同感到困惑?
这两个库的优缺点是什么?
GraphQL 在中继中的确切作用是什么?
哪个库更适合 CRM/ERP 等企业数据驱动的应用程序?
【问题讨论】:
两者都是 Flux 实现,一个用于管理应用程序状态的 Facebook 框架。
Redux:通用 javascript 库,可帮助处理应用程序中的状态管理。 Redux 不依赖于反应,并且
可以与任何库一起使用。 react-redux 库用于
轻松将 react 与 redux 集成。在 redux 中应用程序状态
位于单个存储中,每个组件都可以访问状态,
并且还可以通过调度动作来改变状态。 Redux 没有
处理开箱即用的数据获取,尽管可以手动完成:
只需创建一个从服务器获取数据的操作
商店。
Relay:由 facebook 创建,用于 react,也在内部使用。 Relay 与 redux 类似,它们都使用单个 店铺。主要区别在于relay只管理状态 源自服务器,所有对状态的访问都通过 GraphQL 查询(用于读取数据)和突变(用于更改数据)。 Relay 为您缓存数据并为您优化数据获取,通过 仅获取更改的数据,仅此而已。继电器还支持 乐观更新,即在服务器更新之前更改状态 结果来了。
GraphQL 是一个使用声明式和可组合查询的 Web 服务框架和协议,解决了过度抓取和抓取不足等问题,被认为是替代 REST 的有效候选者。
GraphQL 不依赖于中继,相反,中继依赖于 graphql。 Graphql 可以在 redux 中以与其他所有数据获取相同的方式使用。
正如您所见,relay 相对于 redux 的主要优势在于数据获取已经得到处理,并且为此进行了非常优化。
另一方面,它不能管理客户端的特定状态,但这很少需要。
此外,IMO Relay 更难学习和实施,但最终结果更好、更优化,但对于小型应用程序,我会使用 redux。
【讨论】: