Esses dois conceitos parecem redundantes. E eu vi alguns problemas sugerindo que eles não foram totalmente resolvidos na V1. Alguém pode esclarecer como devem funcionar e como o fazem?
1) Por que existem layouts e componentes de modelo?
1) Como você seleciona layouts alternativos para o conteúdo? (Eu vi um campo de frontmatter no iniciador do blog, mas não consegui rastreá-lo para qualquer efeito real. Em qualquer caso, isso parece o tipo de coisa que você faria em createPages, não uma substituição de frontmatter embutida. não é?)
2) Como funcionam os modelos aninhados? Ou como deveriam funcionar? Ou por que você precisaria deles se você pode selecionar componentes de modelo diferentes para páginas diferentes?
Obrigado!
re 1) Os componentes do modelo são para tipos de página, por exemplo, postagens de blog, páginas de documentação, etc. Os componentes de layout são para tudo compartilhado entre páginas, por exemplo, cabeçalhos, rodapés, barras laterais, etc. Ambos são necessários porque são coisas muito diferentes :-) Leia https://www.gatsbyjs.org/docs/building-with-components/ também
re 2) você não pode agora. Isso é algo que apoiaremos no futuro. Esses campos de frontmatter eram antigos e não eram usados. Desculpe por isso. Apenas os removeu. Postagens de markdown são criadas com createPage
portanto, uma maneira possível de permitir que uma postagem de markdown substitua o layout padrão seria usar o frontmatter para selecionar um layout.
re 3) também não suportado ainda, mas planejado para o futuro. Um caso de uso é que você tem um layout global com um cabeçalho / rodapé e, em seguida, uma subseção do site que possui uma barra lateral de navegação secundária.
você pode tomar o Layout como um modelo de ordem superior que controla outros modelos e passa os componentes globais como Nav, Rodapé ... e usar modelos específicos para diferenciar o conteúdo. Por exemplo, se eu criasse um layout com barra de navegação e rodapé, e dois modelos chamados Páginas e blogs, tanto as páginas quanto os blogs pegariam o rodapé da barra de navegação dos layouts e teriam conteúdo diferente dentro.
Obrigado, isso esclarece as coisas. 😀
Comentários muito úteis
você pode tomar o Layout como um modelo de ordem superior que controla outros modelos e passa os componentes globais como Nav, Rodapé ... e usar modelos específicos para diferenciar o conteúdo. Por exemplo, se eu criasse um layout com barra de navegação e rodapé, e dois modelos chamados Páginas e blogs, tanto as páginas quanto os blogs pegariam o rodapé da barra de navegação dos layouts e teriam conteúdo diferente dentro.