javascript - 为什么我应该在 urql 上使用 Apollo/Relay?
问题描述
我正在开发使用 GraphQL 的应用程序。我正在使用urql
GraphQL 客户端,到目前为止我真的很喜欢它。使用Apollo/Relay的优势是什么urlql
?
解决方案
urql 的核心贡献者在这里。可能回复晚了,但总比没有好
使用这三个中的一个而不是其他的有明显的优点和缺点。
Relay 对模式的要求非常严格,但这意味着它对于最常见的用例具有非常易于使用的模式。它将帮助您使用很少的额外代码设置分页,但总体而言,它确实需要您向应用程序添加更多样板,否则可能会非常小。
Apollo 是最流行的解决方案,也是一个很好的“全能者”。它有一些默认值,有时可能看起来很古怪,但可以说是为了解决 99% 的用例。它带有一个内置的通用规范化缓存,可以应用于任何 API,并允许您使用突变指定其正常缓存逻辑(缓存更新)的异常。
urql 是最新的库,旨在易于使用、小巧且可定制。它不像 Apollo 或 Relay 那样提供开箱即用的标准化缓存,但可以单独添加。虽然 API 很简单,但它确实允许深度定制,这是一把双刃剑:您可能会为您的特定 API 解决意外问题和代码解决方案,但它可能需要您稍后了解 urql 的“交换”。
How to GraphQL 网站上还有一个关于“urql vs Relay vs Apollo”的较长部分:https ://www.howtographql.com/react-urql/0-introduction/
希望这会有所帮助并且不会太偏颇!
推荐阅读
- javascript - VueJS
内部组件不会在按钮单击时打开 - sql - PostgreSQL:如果表中没有对日期的请求然后为 0,如何按日期计算请求?
- node.js - 迁移 Angular Universal firebase 后,云函数抛出错误
- sorting - 对多维切片进行排序
- javascript - 反应路由器和scrollToTop
- core-data - 如何根据相关对象转换 SwiftUI 获取请求结果?
- avro - 关于模式演变,推荐的 Avro 类型命名空间/名称命名方案是什么?
- python - 如果列名有空格,如何重命名 pandas 中的列。例如:Nom 餐厅
- machine-learning - 通过反向传播更新权重
- spring-boot - 如何在控制器之前覆盖 SpringBoot 中的 InputStream?