Relay vs Redux vs Apollo with GraphQL 和 React-Native

IT技术 reactjs react-native redux graphql relayjs
2021-05-02 08:44:04

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

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

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

到目前为止,redux 对我来说效果很好。但是,由于 JS 进化的性质。我对 Go 过去一直使用的堆栈持怀疑态度。

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

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

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

1个回答

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

注意:如果您完全是 GraphQL 的新手,我建议您查看如何使用 GraphQL,您可以在其中找到有关 Relay 和 Apollo 的教程。

几条信息:

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

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

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

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