Apollo Client 和 Relay 有啥区别? [关闭]

Posted

技术标签:

【中文标题】Apollo Client 和 Relay 有啥区别? [关闭]【英文标题】:What are the differences between Apollo Client and Relay? [closed]Apollo Client 和 Relay 有什么区别? [关闭] 【发布时间】:2017-08-31 05:16:24 【问题描述】:

我刚刚被介绍给 GraphQL,并且正在决定在两个框架(Apollo 和 Relay)之间实现我的前端 React Web 应用程序。

我知道 Relay 是由 Facebook 构建的,而 Apollo 是由 Meteor 构建的。有没有人尝试过这两种方法,你的经验如何?我想知道它们之间有什么区别,与 Apollo 相比,哪种 GraphQL 应用程序会从使用 Relay 中受益更多。

【问题讨论】:

【参考方案1】:

TL;DR: 这个问题的答案归结为“视情况而定”。我鼓励你尝试这两个 GraphQL 客户端并得出你自己的结论。 Learn Apollo 和 Learn Relay 是很好的入门资源。

请注意,以下是关于中继 1,而不是中继 2。

框架

Relay 仅适用于 React 和 RN,而 Apollo 与框架无关。由于您想构建一个 React 应用程序,这对您来说不是问题,但仍然值得一提。

GraphQL API

中继需要在Relay specification 中进一步描述的自定义架构。 Apollo 适用于任何 GraphQL 模式。

灵活性

Relay 强加了一个您绝对需要遵循的严格、固定的结构。另一方面,Apollo 为您提供了许多不同的方法和选择来处理特定主题。

生产力

Relay 提供出色的开发人员体验,但进入门槛很高。 Apollo 需要更多的人工来完成工作。

难度

Relay 引入了许多新概念,例如节点、边和连接,并且重申一下,它具有很高的进入门槛。相比之下,Apollo 非常容易上手。

订阅

除了一些社区努力使订阅与 Relay 一起使用外,关于 Relay 中的订阅并没有真正达成共识。另一方面,Apollo 与 subscriptions-transport-ws 很好地集成在一起,已经在社区中得到广泛采用。以worldchat app using GraphQL subscriptions 为例。

架构检查

中继需要a schema check using Babel on build-time。 Apollo 为此提供了可选工具。

【讨论】:

感谢您的详细解答(:

以上是关于Apollo Client 和 Relay 有啥区别? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

在 apollo 和 Relay 分页中返回一个 totalCount 字段

阿波罗和盖茨比有啥区别? [关闭]

为啥需要更新器/更新函数来更新 React Relay 和 Apollo 客户端中的本地缓存?

Relay/Apollo 碎片应该有多细?

graphene.Node 和 graphene.relay.Node 有啥区别?

Apollo 客户端中的抽象中继式连接