Javascript 什么';阿波罗服务器和x27之间的区别是什么;s gql标记和schema.gql文件?

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

Apollo Server文档只提供了一种定义GraphQL模式typeDefs的方法,即使用
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
文件方法确实过时了。我希望阿波罗服务器文档提到这一点。谢谢你的信息!