2017-04-09 85 views
12

我必须从头开始一个新的(web + native)项目(中型应用程序)。由于过多的JS框架和实现过多,特别是在过去的几年中,我一直对我的通常堆栈有第二个疑问。使用GraphQL和React-Native继电器vs Redux vs Apollo

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

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

到目前为止,REDX对我很好。但是,由于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 

我已经看了很多文章,指出使用每个框架的好处,但内容和文章的数量是有点吓人。我明白没有正确或错误的答案。然而,知道上面提到的堆栈应该牢记在一起会很好 - 更少的学习曲线,良好的文档,可维护性,更少的解决方法。

回答

22

我想如果你是来自React + Redux背景,那么Apollo应该是你的出路!

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

的一些信息:

  • 继电器是很强大,但也极其复杂,并配有一个显着的学习曲线。
  • Apollo建立在Redux之上,虽然这对于开发者来说并不重要,因为商店对你来说是隐藏的。然而,使用与在Redux中类似的概念,例如,用updateQueries更新商店。
  • 这也是相当straightfoward到combine the Apollo store with your own Redux store,如果你要管理不是从服务器缓存数据的其他状态
  • 与阿波罗,您还可以使用realtime subscriptions
  • 我肯定会建议对不使用阿波罗或继电器与去只有Redux,因为当涉及到发送查询,突变,缓存和UI更新时,这两个框架都会让你的工作变得非常糟糕。但是,如果您正在寻找更轻量级的GraphQL客户端,您可能需要查看Lokka

看看这个in-depth article比较中继和阿波罗的更多背景信息。

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

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

+1

感谢您的详细解答。您能否告诉我在加速开发周期方面(graphql-server和Graphcool)的主要区别是什么? graphql-server和GraphCool是如何彼此不同的。 – zaq

+1

不知道太多关于'graphql-server',我认为主要区别在于Graphcool提供了一个完整的托管解决方案,而'graphql-server'是一个可以帮助您构建自己的GraphQL服务器的工具。所以取决于你的目标是什么,其中一个或另一个可能更适合:)如果你有兴趣了解更多关于GraphQL如何在服务器上工作的信息,那么'graphql-server'肯定会为你提供更好的服务!如果您只想尽快构建应用程序,Graphcool可能会更有帮助,因为您无需执行任何与服务器相关的工作。 – nburk

+0

谢谢。我需要深入阅读Graphcool文档。目前我想知道你在服务器上存储了什么数据。例如,如果我的应用程序托管在Heroku上。我的托管应用程序如何与Graphcool进行通信以及您的服务器上实际存储了哪些数据。 – zaq

0

学习阿波罗是非常可行的这个过程中,我没有上Udemy,GraphQL with React and Apollo

我有继电器没有经验,但听说它很难去学习,所以如果时间是一个因素,阿波罗可能是一个很好的解决方案:)祝你好运