Gatsby: 布局和模板 - 它们应该如何工作以及它们现在如何工作?

创建于 2017-07-11  ·  3评论  ·  资料来源: gatsbyjs/gatsby

这两个概念似乎是多余的。 而且我看到一些问题表明它们在 V1 中没有完全解决。 有人可以澄清他们应该如何工作以及如何工作吗?

1)为什么布局和模板组件都存在?

1) 您如何为内容选择替代布局? (我在博客 starter 中看到了一个 frontmatter 字段,但我无法追踪它的任何实际效果。无论如何,这似乎是您在 createPages 中所做的事情,而不是内置的 frontmatter 覆盖不会“是吗?)

2) 嵌套模板如何工作? 或者他们应该如何工作? 或者,如果您可以为不同的页面选择不同的模板组件,为什么还需要它们?

谢谢!

最有用的评论

您可以将Layout作为一个更高阶的模板来控制其他模板并传递Nav,Footer...等全局组件,并使用特定模板来区分内容。 例如,如果我创建了一个带有导航栏和页脚的布局,以及两个名为页面和博客的模板,页面和博客都会从布局中获取导航栏页脚,并在其中包含不同的内容。

所有3条评论

re 1) 模板组件用于页面类型,例如博客文章、文档页面等。布局组件用于跨页面共享的所有内容,例如页眉、页脚、侧边栏等。它们都是需要的,因为它们是非常不同的东西:-)也请阅读https://www.gatsbyjs.org/docs/building-with-components/

2)你现在不能。 这是我们将来会支持的。 那些 frontmatter 字段很旧,没有使用。 对于那个很抱歉。 刚刚删除了它们。 Markdown 帖子是用createPage创建的,因此允许 Markdown 帖子覆盖默认布局的一种可能方法是使用 frontmatter 来选择布局。

re 3) 也不支持,但计划在未来。 一个用例是你有一个带有页眉/页脚的全局布局,然后是站点的一个子部分,它有一个辅助侧边栏导航。

您可以将Layout作为一个更高阶的模板来控制其他模板并传递Nav,Footer...等全局组件,并使用特定模板来区分内容。 例如,如果我创建了一个带有导航栏和页脚的布局,以及两个名为页面和博客的模板,页面和博客都会从布局中获取导航栏页脚,并在其中包含不同的内容。

谢谢,这把事情搞清楚了。 😀

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

KyleAMathews picture KyleAMathews  ·  3评论

signalwerk picture signalwerk  ·  3评论

ferMartz picture ferMartz  ·  3评论

dustinhorton picture dustinhorton  ·  3评论

kalinchernev picture kalinchernev  ·  3评论