Javascript 什么';阿波罗服务器和x27之间的区别是什么;s gql标记和schema.gql文件?
Apollo Server文档只提供了一种定义GraphQL模式typeDefs的方法,即使用Javascript 什么';阿波罗服务器和x27之间的区别是什么;s gql标记和schema.gql文件?,javascript,typescript,graphql,apollo,apollo-server,Javascript,Typescript,Graphql,Apollo,Apollo Server,Apollo Server文档只提供了一种定义GraphQL模式typeDefs的方法,即使用gql标记。但是,我看到了一种替代方法,它使用了schema.gql文件 这些方法中有一种过时了吗 使用一种或另一种方法有什么优点或缺点 为什么Apollo Server文档不提及.gql文件类型,即使它受支持?Apollo Server在引擎盖下使用graphql工具中的makeExecutableSchema,从您提供的类型定义和解析程序映射中实际生成服务使用的模式。传递给makeExecutabl
gql
标记。但是,我看到了一种替代方法,它使用了schema.gql
文件
这些方法中有一种过时了吗
使用一种或另一种方法有什么优点或缺点
为什么Apollo Server文档不提及
.gql
文件类型,即使它受支持?Apollo Server在引擎盖下使用graphql工具中的makeExecutableSchema
,从您提供的类型定义和解析程序映射中实际生成服务使用的模式。传递给makeExecutableSchema
的typeDefs
可以是已解析的DocumentNode
对象(这是gql
标记生成的对象),也可以是字符串,在这种情况下,将为您解析它们。您还可以传入任意一个的数组
如果在一个或多个.gql
文件(或.graphql
或其他文件)中有类型定义,则通常只需使用类似于fs.read
的内容获取字符串形式的文件内容,并将其用作typeDefs
参数。这在技术上很好,并且与使用已解析的DocumentNode
对象一样有效
唯一的问题是,与graphql工具
不同,apollo服务器
是明确的。这反映在模块的TypeScript定义中。虽然使用纯字符串作为typeDefs目前还有效,但这样做可能会导致将来出现一些意外行为,因此请谨慎使用
除上述内容外,还有一个实际的理由可以为您的模式使用单独的文件——因为有支持这些文件的编辑器插件,所以更容易利用语法突出显示和代码完成。还需要注意的是,如果您碰巧使用babel传输代码,还可以利用类似将文件作为解析文档节点导入的功能。Ok,因此.gql
/.graphql
文件方法确实过时了。我希望阿波罗服务器文档提到这一点。谢谢你的信息!