打开网易新闻 查看更多图片

作者 | Michal Tyszkiewicz

译者 | 王坤祥

策划 | 万佳

本文介绍了几个与 GraphQL 有关的工具,它们能让你更方便地使用 GraphQL。鉴于篇幅有限,我只会挑选几个好用且有代表性的。

1Prisma

我们都知道,使用 GraphQL 需要设置数据库。当然,你可以选择使用 BaaS 服务提供的外部数据库。但是,如果你不想这么做,那应该怎么办?这就是 Prisma 要解决的问题。Prisma 是一个中间件,它是介于你的应用和数据库之间的桥梁。Prisma 是一个 ORM 库,可以让你用自己所选的编程语言与服务器中的数据库进行交互。因此,如果你要将数据写入 MySQL 数据库,不必使用 SQL 语句进行操作,Prisma 可以让你使用 Python、JavaScript 或者你喜欢的其他某种编程语言进行操作。

很多人可能会有疑问,“这不就是常规的 ORM 库都能做到的吗?”。这个疑问很对。但是,Prisma 还附带一些其他功能:

与数据库种类解耦:Prisma 当前支持 MySQL、PostgreSQL、MariaDB、SQLite 以及 AWS Aurora,并且在不久的将来会支持更多的数据库;

具有对 TypeScript、JavaScript、Flow 和 Go 语言的支持;

提供内置的基本 CRUD 功能。

地址:

https://www.prisma.io/

2Relay

打开网易新闻 查看更多图片

Relay 是由 Facebook 创建的一个 JavaScript 框架,用于获取和管理 GraphQL 数据。Relay 应该是 GraphQL 用户的首选工具,其特点是可以验证和优化你的代码。另外一个重点是,Relay 是 GraphQL 和 React 之间交互的桥梁。它可以让你使用 GraphQL 设置数据请求,然后对响应结果进行处理,将查询收集到网络请求中以获取所需的准确信息。

Relay 主要由三个松耦合模块组成:

  • Relay Compiler:一个 GraphQL 编译器,支持分析、验证和优化代码中的 GraphQL;

  • Relay Runtime:一个功能齐全的 GraphQL 运行环境,用于构建更高级别的客户端 API;

  • Relay/React:一个将 Relay 运行环境与 React 集成在一起的生产 API。

地址:

https://relay.dev/

3Apollo

Apollo 平台是 GraphQL 的一种功能实现,它可以从服务器获取数据并传送到 UI 进端行渲染。Apollo 客户端是 JavaScript 的全状态管理库,可以让你通过 GraphQL 管理本地和远程数据。Apollo 平台的目标是让你能通过 GraphQL 获取数据并构建 UI 组件。Apollo 服务端提供了可以快速构建 GraphQL API 的方法,可以让你通过任意 GraphQL 客户端(包括 Apollo 客户端)查询符合一定规范的服务器中的数据。

让我们一起看一下 Apollo 客户端有哪些特性:

  • 提供了一种声明式的数据提取方法,所有用于数据检索、跟踪、加载以及上传数据到 UI 的逻辑都包含在一个查询中;

  • 专为现代 React 设计,Apollo 客户端充分利用了最新的 React 功能,例如 hooks(钩子);

  • 适应性强,可以无缝地放入任何 JavaScript 应用中;

  • 兼容性高,可与任何 GraphQL API 一起使用。

地址:

https://www.apollographql.com/

4Hasura

Hasura 是一个具有高性能的 GraphQL 引擎。它 为 Postgres 数据库提供即时的 GraphQL API,可以用于远程模式下的业务逻辑处理以及数据库事件的 webhook 触发。

Hasura 主要功能是帮助快速构建由 Postgres 数据库驱动的 GraphQL 应用程序,或者帮助使用 Postgres 的应用迁移到 GraphQL,它具有以下特点:

  • 实时性高,可以通过订阅,将 GraphQL 查询转换为实时查询;

  • 开箱即用,只需将其指向 Postgres 数据库即可立即获得 GraphQL API;

  • 强大的查询功能,Hasura 具有内置的过滤、分页、模式搜索、批量插入、更新、删除突变等功能;

  • 产品迭代快,发展迅速,未来会推出更多实用功能。

地址:

https://hasura.io/

5URQL

打开网易新闻 查看更多图片

URQL 是 Formidable 实验室提供的功能强大且应用场景广泛的 GraphQL 客户端。它使用 React hooks 以及相关组件,旨在成为一个轻量级的客户端。用户可以自定义满足自己特殊需求的多功能工具,并在进一步使用 GraphQL 后,可以对自定义工具进行微调。

URQL 的目标定位很明晰,即保持简单易用的同时,还要有能够处理复杂任务的功能。它具有以下几个特点:

  • 性能和功能相对平衡,比其他客户端轻量很多;

  • 支持自定义,客户端提供了一些默认设置,还可方便地自定义与 API、应用或框架交互的代码;

  • 开箱即用,URQL 基本上可以做到迅速启用,而且不需要像其他客户端那样进行大量的配置;

  • 软件命名有趣,以标志性情景喜剧角色命名。

地址:

https://formidable.com/open-source/urql/

原文链接:

https://blog.graphqleditor.com/graphql-tools-partone

今日好文推荐

每周精要上线移动端,立刻订阅,你将获得

InfoQ 用户每周必看的精华内容集合:

资深技术编辑撰写或编译的 全球 IT 要闻

一线技术专家撰写的 实操技术案例

InfoQ 出品的 课程技术活动报名通道;

“码”上关注,订阅 每周新鲜资讯

点个在看少个 bug