Gatsby 中 GraphQL 查询中的 file 和 allFile 有什么区别?
What is the difference between file and allFile in the GraphQL query in Gatsby?
在我的 GraphiQL 浏览器中,我似乎可以查询 file
或 allFile
,但我不太明白两者之间的区别。事实上,每个查询似乎都以这种方式“重复”。有人可以解释一下,或者给我指出一些解释差异的文档,以及我什么时候应该使用一个吗?
allFile
(注意 all
前缀)代表 Gatsby 使用 gatsby-source-filesystem
推断出的 file
节点类型的所有 GraphQL 资产,而 file
是一个孤立的节点,需要过滤才能获得特定的对象。
换句话说,allFile
公开了项目中的所有文件(至少是 Gatsby 知道的那些文件),这将为您提供一个数组 nodes
而 file
仅指向特定的 GraphQL 节点。这个单一和孤立的节点通常需要被过滤以将它们放在其他节点中。
同样的推理适用于 allMdx
和 mdx
、allSite
和 site
等
例如,使用 allMdx
示例(由 gatsby-plugin-mdx
创建的节点):假设您有一个博客项目,您将 post 存储在 MDX 文件中。在您的 gatsby-node.js
中,您将查询 allMdx
节点以获得所有 post,然后,您将遍历结果并为每个 post 创建动态页面(使用createPage
方法)。在 post 模板(每个特定 post 将使用的模板)中,您需要使用 mdx
而不是查询 allMdx
,因为它专门指向一个mdx
节点。
当然,在你的模板中,你仍然可以使用 allMdx
,因为它不是最佳的 GraphQL 节点,因为你有一个特定的 mdx
将是你的单个 post,由一些唯一值过滤像 slug
、id
等
在我的 GraphiQL 浏览器中,我似乎可以查询 file
或 allFile
,但我不太明白两者之间的区别。事实上,每个查询似乎都以这种方式“重复”。有人可以解释一下,或者给我指出一些解释差异的文档,以及我什么时候应该使用一个吗?
allFile
(注意 all
前缀)代表 Gatsby 使用 gatsby-source-filesystem
推断出的 file
节点类型的所有 GraphQL 资产,而 file
是一个孤立的节点,需要过滤才能获得特定的对象。
换句话说,allFile
公开了项目中的所有文件(至少是 Gatsby 知道的那些文件),这将为您提供一个数组 nodes
而 file
仅指向特定的 GraphQL 节点。这个单一和孤立的节点通常需要被过滤以将它们放在其他节点中。
同样的推理适用于 allMdx
和 mdx
、allSite
和 site
等
例如,使用 allMdx
示例(由 gatsby-plugin-mdx
创建的节点):假设您有一个博客项目,您将 post 存储在 MDX 文件中。在您的 gatsby-node.js
中,您将查询 allMdx
节点以获得所有 post,然后,您将遍历结果并为每个 post 创建动态页面(使用createPage
方法)。在 post 模板(每个特定 post 将使用的模板)中,您需要使用 mdx
而不是查询 allMdx
,因为它专门指向一个mdx
节点。
当然,在你的模板中,你仍然可以使用 allMdx
,因为它不是最佳的 GraphQL 节点,因为你有一个特定的 mdx
将是你的单个 post,由一些唯一值过滤像 slug
、id
等