我刚刚被介绍给 GraphQL,并且正在决定在两个框架(Apollo和Relay)之间来实现我的前端 React Web 应用程序。
我知道 Relay 是由 Facebook 构建的,而 Apollo 是由 Meteor 构建的。有没有人尝试过这两种方法,你的经验如何?我想知道它们之间有什么区别,与 Apollo 相比,哪种 GraphQL 应用程序会从使用 Relay 中受益更多。
TL; DR:这个问题的答案归结为“它取决于”。我鼓励你尝试这两个 GraphQL 客户端并得出你自己的结论。Learn Apollo和Learn Relay是入门的绝佳资源。
请注意,以下是关于中继 1,而不是中继 2。
Relay 仅适用于 React 和 RN,而 Apollo 与框架无关。当你想构建一个 React 应用程序时,这对你来说不是问题,但仍然值得一提。
Relay 需要在Relay 规范中进一步描述的自定义模式。Apollo 适用于任何 GraphQL 模式。
Relay 强加了一个您绝对需要遵循的严格、固定的结构。另一方面,Apollo 为您提供了许多不同的方法和选择来处理特定主题。
Relay 提供了出色的开发人员体验,但进入门槛很高。Apollo 需要更多的手动工作才能完成任务。
Relay 引入了许多新概念,例如节点、边和连接,并且重申一下,它具有很高的进入门槛。相比之下,Apollo 非常容易上手。
除了一些社区努力使订阅与 Relay 一起工作之外,关于 Relay 中的订阅并没有真正达成共识。另一方面,Apollo 与subscriptions-transport-ws
已经在社区中得到广泛采用的集成很好。例如,这是一个使用 GraphQL 订阅的 worldchat 应用程序。
Relay 需要在 build-time 上使用 Babel 进行模式检查。Apollo 为此提供了可选工具。