duk*_*uke 4 javascript typescript apollo graphql apollo-server
Apollo Server 文档仅提供了一种定义 GraphQL 模式 typeDef 的方法,即使用标签gql。但是,我看到了使用schema.gql文件的替代方法。
这些方法之一已经过时了吗?
使用其中一种方法有什么优点或缺点?
.gql尽管支持该文件类型,为什么 Apollo Server 文档没有提及该文件类型?
ApolloServermakeExecutableSchema在graphql-tools底层使用您提供的类型定义和解析器映射来实际生成服务使用的模式。您typeDefs传递给的makeExecutableSchema可以是已解析的DocumentNode对象(这是gql标签生成的),也可以是字符串,在这种情况下,将为您解析它们。您还可以传入任一数组。
如果您的类型定义位于一个或多个.gql文件(或.graphql,或其他文件)中,那么您通常只是使用类似的方法fs.read来获取文件内容作为字符串并将其用作typeDefs参数。这在技术上DocumentNode很好,并且与使用已解析的对象一样有效。
唯一的问题是,与 不同的是graphql-tools,apollo-server明确不支持这种方法。这反映在模块的 TypeScript 定义中。虽然目前使用纯字符串作为 typeDefs 是可行的,但这样做可能会导致将来出现一些意外的行为,因此请谨慎行事。
除此之外,还有一个实际原因是为您的模式使用单独的文件——更容易利用语法突出显示和代码完成,因为有支持这些文件的编辑器插件。还需要指出的是,如果您碰巧使用 babel 转译代码,也可以利用babel-plugin-import-graphql之类的功能将文件导入为已解析的 DocumentNode。
| 归档时间: |
|
| 查看次数: |
1149 次 |
| 最近记录: |