这两个概念似乎是多余的。 而且我看到一些问题表明它们在 V1 中没有完全解决。 有人可以澄清他们应该如何工作以及如何工作吗?
1)为什么布局和模板组件都存在?
1) 您如何为内容选择替代布局? (我在博客 starter 中看到了一个 frontmatter 字段,但我无法追踪它的任何实际效果。无论如何,这似乎是您在 createPages 中所做的事情,而不是内置的 frontmatter 覆盖不会“是吗?)
2) 嵌套模板如何工作? 或者他们应该如何工作? 或者,如果您可以为不同的页面选择不同的模板组件,为什么还需要它们?
谢谢!
re 1) 模板组件用于页面类型,例如博客文章、文档页面等。布局组件用于跨页面共享的所有内容,例如页眉、页脚、侧边栏等。它们都是需要的,因为它们是非常不同的东西:-)也请阅读https://www.gatsbyjs.org/docs/building-with-components/
2)你现在不能。 这是我们将来会支持的。 那些 frontmatter 字段很旧,没有使用。 对于那个很抱歉。 刚刚删除了它们。 Markdown 帖子是用createPage
创建的,因此允许 Markdown 帖子覆盖默认布局的一种可能方法是使用 frontmatter 来选择布局。
re 3) 也不支持,但计划在未来。 一个用例是你有一个带有页眉/页脚的全局布局,然后是站点的一个子部分,它有一个辅助侧边栏导航。
您可以将Layout作为一个更高阶的模板来控制其他模板并传递Nav,Footer...等全局组件,并使用特定模板来区分内容。 例如,如果我创建了一个带有导航栏和页脚的布局,以及两个名为页面和博客的模板,页面和博客都会从布局中获取导航栏页脚,并在其中包含不同的内容。
谢谢,这把事情搞清楚了。 😀
最有用的评论
您可以将Layout作为一个更高阶的模板来控制其他模板并传递Nav,Footer...等全局组件,并使用特定模板来区分内容。 例如,如果我创建了一个带有导航栏和页脚的布局,以及两个名为页面和博客的模板,页面和博客都会从布局中获取导航栏页脚,并在其中包含不同的内容。