使用GraphQL和React-Native继续使用Redux vs Apollo

zaq*_*zaq 25 reactjs graphql react-native redux relayjs

我必须从头开始一个新的(web + native)项目(中型应用程序).由于过去几年里有过多的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
Run Code Online (Sandbox Code Playgroud)

我已经阅读了许多文章,说明使用每个框架的好处,但内容和文章的数量有点可怕.我明白没有正确或错误的答案.但是,很高兴知道上面提到的堆栈很好地记在一起 - 更少的学习曲线,良好的文档,可维护性,更少的变通方法.

nbu*_*urk 32

我想如果你来自React + Redux背景,那么阿波罗应该是你的最佳选择!

注意:如果您是GraphQL的新手,我建议您查看如何使用GraphQL,您可以在Relay和Apollo上找到教程.

一些信息:

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

看看这篇比较Relay和Apollo 的深度文章,了解更多背景信息.

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

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