PPxu

为什么说 GraphQL 是未来

原文链接: medium.com

为什么说 GraphQL 是未来

它对你来说意味着什么

到今天为止你们基本上肯定都听说过 GraphQL,一个开源的数据查询语言和运行时。最近有很多关于它的讨论 —— 在上周于巴黎举行的 React Europe 上面,关于 GraphQL 有 三个 完整演讲。在看完这篇文章之后,你就会知道原因了。

1. 你已经在使用它了

如果你是第一次听到 GraphQL,这里有一个有趣的事实:在过去的几年中你每天都在使用它。Facebook 有 10 亿多的日活跃用户,而 GraphQL 就是 Facebook 正常运作的基础。使用 Facebook 就意味着使用 GraphQL。

Facebook 从 2012 年起就用上了 GraphQL —— 比去年 7 月被开源要早的多。从那时开始,它刮起了一阵旋风,围绕 GrapQL 的开源生态圈迅速的发展了起来。

2. GraphQL 解决了实际问题,大家纷纷关注

不只是 React 的开发者们对 GraphQL 感到兴奋。Angular、iOS 和 Android 的开发者们也对 GraphQL 能提供什么非常感兴趣。它的流行度正在迅速增加,基于一个很好的理由:GraphQL 对开发者们每天纠结的一些非常实际的问题提供了解决方案。这就是为什么类似 TwitterIntuitDrupal 这些公司都会采用它。

Fabric,Twitter 的移动开发平台,刚刚宣布他们正在使用 GraphQL:

Fabric,Twitter 的移动开发平台


自从我们开始构建 Apollo,一个开源的 GraphQL 数据栈,我们几乎每天都在接触那些想要采用 GraphQL 来构建一个新产品,或者使用 GraphQL 来重写他们的整个产品底层的公司。

这些公司各不相同,不过他们有一点是相同的 —— 他们至少满足下面中的一项:

  • 他们有不止一个客户端(比如 web + iOS)
  • 他们有一个移动端并关注延迟和带宽
  • 他们正在转型到一个微服务架构
  • 他们的 REST API 是如此复杂以至于产品开发过程中有明显的阻碍
  • 他们想做前后端分离来提高开发效率

这些公司转向 GrapQL 是因为他们意识到 REST 不能帮助他们解决这些问题,不过 GraphQL 可以。这就是我要讲的下一点…

3. REST 并不是答案。

这里是一个简单的 REST 和 GraphQL 之间的差异对比:

REST 只有一个特定的方法,而 GraphQL 有一层清晰的抽象层。

GraphQL 就是在服务端和客户端之间的清晰的抽象层,而一个特定的 REST 方法永远无法提供。

这篇文章不准备讨论 GraphQL 和 REST 对比的更多细节,不过如果你有兴趣深入研究,我们之前有写过一系列的 博客 文章讨论

可以咨询下面这些人:

如果你愿意找的话在这外面还有更多的例子。Twitter、Intuit 和 Drupal 仅仅是个开头(在 Drupal 的例子,他们的 GraphQL 模块只是 刚起步)。我可以告诉你至少一打还没有公开宣布使用 GraphQL 的知名公司的名字。毫无疑问,GraphQL 就是未来。

你可能会想,“这很棒,不过为什么我要关心?”

4. GraphQL 对开发者来说是个大新闻。

GraphQL 将混乱变得有秩序:

  • 前后端之间干净的 API
  • 更少的交流开销和更少的会议
  • 不需要花时间写 API 文档
  • 不需要花时间试着理解一个 API
  • 针对 API 的很棒的工具

使用 GraphQL,对于一个新手工程师大概只要花 5 分钟就能学会如何使用 API。包括他们用来理解如何编写基本的 GraphQL 查询的时间。

因此无论你是 React、Angular、Ember、iOS 还是 Android 开发者:花一点时间来学习 GraphQL,在你的下一个项目中使用它并且尝试说服你的同事或者老板开始采用它。你不会后悔的。

最好的消息是 —— 你不是一个人在战斗!有很多刚刚发现 GraphQL 的开发者们,他们组织了一个非常友好和提供支持的社区。一些在我们的 Slack 频道,另一些加入了一个由 ApolloGraphQL GitHub 组织的用户和贡献者组成的非常活跃的群组。

如果你遇到一个 REST 信奉者或者专业保守派,只需记得:

一个新的科学真理取得胜利并不是通过让它的反对者们信服并看到真理的光明,而是通过这些反对者们最终死去,熟悉它的新一代成长起来。

— 马克斯·普朗克