如何理解 Gatsby 博客模板内容类型的逻辑?
How to understand the logic of Gatsby blog template content types?
我正在使用我的第一个 Gatsby 模板 (Hello Friend by Panr),但我完全没有使用 React.js.
的经验
我试图理解 gatsby-node.js
和 gatsby-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
帖子被枚举(分页)但页面不是?
pageA
和pageB
的排序实现了什么?
此外,我将如何添加其他内容类别?
注意:我意识到这是一个不太适合 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
文件夹,其中包含降价文件。就是这样
我正在使用我的第一个 Gatsby 模板 (Hello Friend by Panr),但我完全没有使用 React.js.
的经验我试图理解 gatsby-node.js
和 gatsby-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
帖子被枚举(分页)但页面不是?
pageA
和pageB
的排序实现了什么?
此外,我将如何添加其他内容类别?
注意:我意识到这是一个不太适合 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
文件夹,其中包含降价文件。就是这样