Gatsby 如何使用 GraphQL 提供 Markdown frontmatter?
Posted
技术标签:
【中文标题】Gatsby 如何使用 GraphQL 提供 Markdown frontmatter?【英文标题】:How does Gatsby serve up Markdown frontmatter with GraphQL? 【发布时间】:2019-01-23 15:22:01 【问题描述】:对我来说 Gatsby 最有趣的功能是 gatsby-source-filesystem 能够利用降价文件目录并通过 GraphQL 查询将静态内容提供给 React。本质上,带有 YAML frontmatter 的平面文件是可过滤的、可排序的、可嵌套的等。它是如何完成的?它是基于现有的方法吗?如果没有,是否可以将其提取以与其他堆栈一起使用? (以 Vuepress 为例)
跟进:方法是 YAML 特定的吗?可以是 TOML 或 JSON 或 CSV 或或或...?
【问题讨论】:
如果这澄清了什么,我不确定apollo
是否在做这项工作,或者它是否与webpack的yaml-loader
或什么有关
【参考方案1】:
gatsby-source-filesystem
没有任何特定于 markdown 的逻辑,并且确实不负责拆分 frontmatter。这就是gatsby-transformer-remark
的工作,它使用grey-matter 进行实际的frontmatter 解析(source)。
使用 Gatsby 提供的 createNode 操作从那里创建节点。 Gatsby 根据节点的值推断类型。
【讨论】:
噢噢噢谢谢你,科里!灰质看起来非常漂亮。 createNode 需要更多的挖掘才能理解,但你让我走上了正确的道路。 :)以上是关于Gatsby 如何使用 GraphQL 提供 Markdown frontmatter?的主要内容,如果未能解决你的问题,请参考以下文章
Gatsby:在自定义帖子类型上使用 GraphQL 查询和自定义分类
如何让 Drupal 8 视图与 GraphQL / Gatsby.js 一起使用
如何使用 Graphql 从 Strapi 查询 Gatsby 中的多个图像
如何在 graphQL 中获取 Gatsby 页面 HTML