Relay vs Redux vs Apollo with GraphQL and React-Native



我必须从头开始一个新的(Web +本机)项目(中型应用程序)。由于大量的JS框架和实现,特别是在过去几年中,我一直对我通常的堆栈有第二个疑问。

我一直在前端使用 react + redux,在后端使用 Node 和 MongoDB 通过 REST API 进行通信。

对于这个新项目,我决定使用 React-Native + React Native for Web + Node + PostgreSQL。但是,我想知道我应该使用哪个框架来获取数据和状态/存储管理。

到目前为止,redux 对我很好。但是,由于JS演进的性质。我对过去一直在使用的相同堆栈有点怀疑。

如果我使用以下堆栈,有什么优缺点

React-Native + React-Native-For-Web + Redux + GraphQL + Node + PostgreSQL

React-Native + React-Native-For-Web + Relay + GraphQL + Node + PostgreSQL

React-Native + React-Native-For-Web + Apollo + GraphQL + Node + PostgreSQL

我读过很多文章,说明使用每个框架的好处,但内容和文章的数量有点吓人。我知道没有正确或错误的答案。但是,很高兴知道上述哪个堆栈可以很好地结合在一起,同时牢记 - 更少的学习曲线,良好的文档,可维护性,更少的解决方法。

我认为如果你来自 React + Redux 背景,那么 Apollo 应该是你的选择!

注意:如果你是 GraphQL 的新手,我建议你查看 How to GraphQL,在那里你可以找到关于 Relay 和 Apollo 的教程。

几条信息:

  • Relay非常强大,但也非常复杂,并且具有显着的学习曲线。
  • Apollo建立在Redux之上,尽管这对开发人员来说并不真正相关,因为商店对你来说是隐藏的。但是,使用与Redux中类似的概念,例如用于使用updateQueries更新存储。
  • 如果您想管理服务器缓存数据以外的状态,将 Apollo 存储与您自己的 Redux 存储相结合也非常简单。
  • 使用
  • Apollo,您还可以使用实时订阅
  • 我绝对建议不要使用Apollo或Relay,而只使用Redux,因为在发送查询,突变,缓存和UI更新时,这两个框架都减轻了您的工作。但是,如果您正在寻找更轻量级的 GraphQL 客户端,您可能想看看 Lokka。

看看这篇比较中继和阿波罗的深入文章,了解更多背景信息。

如果你想了解更多关于 Relay 和 Apollo 的信息,请查看How to GraphQL教程网站。

顺便说一下,如果你不想自己构建后端的另一个选择是 Graphcool(免责声明:我为他们工作:))。

最新更新