GraphQL LogoGraphQL

基于 Web 的 GraphQL IDE 的胜利:Playground 和 GraphiQL 如何以及为何携手

2020 年 4 月 3 日,作者:Rikki Schulte,Jason Kuhrt

Banner showing the Prisma and GraphQL Foundation logos with a :handshake: emoji between them

GraphiQL 的起源#

GraphiQL 的首次公开提交是在 2014 年。

Lee ByronHyo JeongAngel Gomez 首次发布它时,其目的是为 GraphQL 创建一个最小的参考 IDE 开发生态系统。 Greg Hurrell 创建了流式 graphql-language-service-parser,旨在增强 codemirror-graphql 模式。

目标是为人们提供构建自己的基于 Web 或桌面 IDE 工具所需的实用程序包,并且在核心上,为人们提供一个相对简单的工具来开始学习和应用该语言,以及探索模式。 当时,LSP 还没有成为普遍接受的标准,VSCode 也还没有成为今天如此流行的开发工具。

去年,这些最初的工程师将 GraphiQL、codemirror-graphqlgraphql-language-service 包这三个代码库移交给了 GraphQL 基金会。

快进到今天,GraphiQL 现在被数十种语言的 GraphQL 实现以及数百种框架和运行时使用。 它用于从 HTTP 操作到查询本地模式、数据科学工具,甚至用于物联网平台的数据传输。 您会在 AWS 仪表板、GitHub 开发者工具以及我们很荣幸看到这个库被使用的许多其他地方找到它。

进入 Playground#

除了 GraphiQL 之外,许多人熟悉它的兄弟——功能强大且美观的 GraphQL Playground。它效仿 GraphiQL,使用了我们的 codemirror-graphqlInsomniaAltair 以及许多其他工具也使用它!)。这就是为什么这些工具的直接编辑体验之间存在如此多相似之处的原因。

Playground 正是我们想要的结果。它帮助推动了我们语言生态系统的开发,并为用户提供了一个比更注重定制的 GraphiQL 更简单的选择。它提供了许多优秀的特性——graphql-config 支持、多个标签页、i18n 和 http 服务器中间件。

Prisma 将 Playground 捐赠给 GraphQL 基金会#

正如许多人已经猜到,Prisma 正在将 Playground 捐赠给 GraphQL 基金会。 进入 2019 年,Prisma 预计最终会推出 Playground 2.0,但随后模块化 GraphiQL 2 项目的出现为我们带来了巨大的协同效应,而 Prisma 向开发者提供模块化数据库工具的转变更是让这种协同效应变得更加自然。

Playground 1.x 是由 数十位贡献者共同努力的结果。Prisma 感谢所有一路帮助我们的贡献者。Prisma 仍然致力于支持 GraphQL 语言的未来。例如,Prisma Labs 团队 继续专注于 GraphQL API 层,并 最近宣布Nexus 从一个模式构建库转变为一个完整的 成熟的 GraphQL API 框架

您喜爱的 Playground 功能#

为了保持一致性,我们将保留许多相同的功能,无论是将它们引入核心还是提供与 Playground 预设一起发布的插件。

  • 多个选项卡(GraphiQL 核心)
  • 每个操作选项卡的标题选项卡(插件)
  • 跟踪选项卡(插件)
  • 游乐场文档浏览器(插件)
  • 国际化(GraphiQL 核心)
  • graphql-config 支持,以及来自我们与 Prisma 合作的优秀同事 Guild Dev 的新功能,他们负责许多其他项目。
  • 易于使用的中间件

新功能#

这些新功能将随新的 graphql@2.0.0 一起发布

  • vscode 风格的命令面板(通过 monaco-editor
  • 跳转到片段或其他类型定义
  • 从项目的源文件生成操作集合
  • 更多可定制的网络选项 - 每个项目的默认标题,以及每个操作的标题
  • 用于集成自定义身份验证流程的助手
  • 广泛的主题、布局和组件定制能力(您可以从游乐场主题预设开始,然后进行修改!)
  • 自定义选项卡和面板
  • 与原始创建者、我们与 OneGraph 的同事合作,推出了一个一流的 graphiql-explorer 插件

如何重新实现?#

Playground 2.0 将是一个 GraphiQL 预设,它包含自定义主题以及自定义游乐场文档浏览器插件(作为 @orta 和其他用户提出的新文档浏览器的替代方案),HTTP 标题和跟踪选项卡插件。您可以在 GraphiQL 插件 API 元问题GraphiQL 单仓库中的其他与游乐场相关的讨论问题 中找到更多技术细节、正在进行的讨论和需要解决的问题。

虽然 Playground 团队的目标是与 Playground 1.0 保持相对一致,但团队将接受关于新功能和插件的提案,这些功能和插件建立在现有的 GraphQL Playground 体验之上。 功能汇总 项目是一个很好的地方,可以查看我们已经为 Playground 预设可以使用的插件计划了什么,或者如果你没有看到你想要的东西,也可以创建一个提案。

graphql-playground 仓库的下一步计划#

现有的 graphql-playground 仓库将在归档之前发布一到两个维护/错误修复版本。你当然可以继续 fork 它。你可以在 我们为这次迁移创建的 graphql-playground 问题 中了解更多信息。

贡献者招募#

我们也正在寻找贡献者来组建一个团队,开发、支持和维护 Playground 预设。目标是帮助他们迭代和稳定插件 API 工作,以及努力为 Playground 预设及其相关插件做出贡献和维护。如果你有兴趣,请在 贡献者招募 Github 问题 中留言。

你也可以关注 插件 API 提案讨论问题 以获取更新,并加入我们为 Playground 计划创建的 Discord 频道