为什么您需要带Apollo的graphql-tag

按照一些教程和示例,我将GraphQL API集成到一个简单的Vue应用程序中。我正在使用Apollo与API和graphql-tag提供的模板文字进行交互以编写查询,如下所示:

gql`
    query getUser($userId: ID) {
        user(id: $userId) {
            name,email
        }
    }
`

但是,我不太了解graphql-tag软件包的必要性。据我了解,此程序包将查询转换为AST,但在前端中此功能的目的是什么,为什么需要使用graphql-tag程序包呢? GraphQL查询不能按原样发送到服务器吗?

WANG9002 回答:为什么您需要带Apollo的graphql-tag

它们可以只是纯字符串,您可以获取IDE扩展,以在显示gql标记的位置突出显示语法。如果您尝试执行诸如添加额外字段,将多个查询合并在一起或other interesting stuff之类的操作,则字符串不方便操作。语义也分隔了以下字符串的区别和重要性。

,

查询本身 可以发送到服务器,而不会变成DocumentNode对象。但是,Apollo不会将查询发送到您的服务器。它实现了许多其他功能,包括响应的规范化缓存。为了使缓存正常工作,我们需要将提供的查询解析为机器可读的格式。例如,通过这样做,我们可以知道所有这些查询实际上都是等效的,并且如果我们已经有了数据,则可以从缓存中获取它们:

{
  foo
  bar
}

query SomeOperationName {
  foo
  bar
}

query { foo bar }

{
  bar
  qux: foo
}
本文链接:https://www.f2er.com/2909993.html

大家都在问