如何理解 Gatsby 博客模板内容类型的逻辑?

How to understand the logic of Gatsby blog template content types?

我正在使用我的第一个 Gatsby 模板 (Hello Friend by Panr),但我完全没有使用 React.js.

的经验

我试图理解 gatsby-node.jsgatsby-config.js 中模板设计的一些逻辑 - 具体来说:

来自gatsby-config.js

    {
      resolve: `gatsby-source-filesystem`,
      options: {
        name: `posts`,
        path: `${__dirname}/src/posts`,
      },
    },
    {
      resolve: `gatsby-source-filesystem`,
      options: {
        name: `pages`,
        path: `${__dirname}/src/pages`,
      },
    },

来自gatsby-node.js

    const sortedPages = markdownPages.sort((pageA, pageB) => {
      const typeA = getType(pageA.node)
      const typeB = getType(pageB.node)

      return (typeA > typeB) - (typeA < typeB)
    })

    const posts = allNodes.filter(
      ({ internal, fileAbsolutePath }) =>
        internal.type === 'MarkdownRemark' &&
        fileAbsolutePath.indexOf('/posts/') !== -1,
    )

    // Create posts index with pagination
    paginate({
      createPage,
      items: posts,
      component: indexTemplate,
      itemsPerPage: siteMetadata.postsPerPage,
      pathPrefix: '/',
    })

我是否正确地认为有两个内容类别:

1.pages

2.posts

帖子被枚举(分页)但页面不是?

pageApageB的排序实现了什么?

此外,我将如何添加其他内容类别?

注意:我意识到这是一个不太适合 Stack Overflow 的模糊问题。我会在 Gatsby 特定的论坛上问这个问题,但我不相信存在,这是 Gatsby community page.

中推荐的论坛

是的,目前有两个内容类别,默认情况下仅列出 post。

排序可能很天真,因为在我编写入门程序时,我不知道有什么好的插件可以为每种内容类型处理单独的分页(上一页/下一页 post 或页面),所以我为此制定了自己的逻辑。 sortedPages[...typeA, ...typeB] 的数组,稍后检查每个项目是否有兄弟以创建自己的导航(上一个/下一个)。

如果您想创建另一种内容类型,您可以按照在启动器中定义的相同方式进行操作。只需添加另一个 gatsby-source-filesystem 插件实例,例如:

  {
      resolve: `gatsby-source-filesystem`,
      options: {
        name: `typeC`,
        path: `${__dirname}/src/typeC`,
      },
    },

并在 src 目录中创建 typeC 文件夹,其中包含降价文件。就是这样