Gatsby接入任何数据源:从Markdown、WordPress到Headless CMS的完整实战清单
【免费下载链接】gatsbyReact-based framework with performance, scalability, and security built in.项目地址: https://gitcode.com/gh_mirrors/ga/gatsby
Gatsby 是一款内置性能、可扩展性与安全性的 React 静态站点框架,它最大的“超能力”之一,就是把任何数据源统一转换成 GraphQL 查询——无论是本地的 Markdown 文件、JSON/YAML 配置,还是 WordPress、Contentful 这类 Headless CMS,甚至 PostgreSQL、MongoDB 数据库和私有 API。数据源插件(source plugin)在构建时拉取数据,Gatsby 自动推断出一套 GraphQL Schema,你只需写查询就能驱动整个站点。
这份清单带你按“本地文件 → 内容管理系统 → 数据库/API”的路线,快速掌握 Gatsby 数据源接入的全部玩法。
一条数据流打通所有内容:源插件 + GraphQL
Gatsby 的数据流非常固定,理解一次就通用于所有场景:
- 源插件(如
gatsby-source-filesystem、gatsby-source-wordpress)在构建时把外部数据拉进来,转成“节点”(Node); - 变换插件(如
gatsby-transformer-remark)进一步解析,例如把 Markdown 变成带 HTML 的结构化内容; - GraphQL 查询在 GraphiQL 界面(默认
localhost:8000/__graphql)中交互式探索字段,按需取数,页面零冗余。
这意味着:换个数据源,只换插件配置,页面查询思路完全复用。🎯
Markdown 与本地文件:最简单的起点
博客文章、文档类站点,通常从文件系统开始:
- 用 gatsby-source-filesystem 扫描目录生成 File 节点;
- 用 gatsby-transformer-remark 把 Markdown 变换成可查询的
MarkdownRemark类型; - 在
gatsby-node.js中通过createPages为每篇文章生成一个静态页面。
官方教程详细演示了全过程:Sourcing from the Filesystem。下面是接入文件数据源后,在 GraphiQL 中直接查询allFile的真实效果:
想要“文章 + 图片”的完整博客效果,可以参考仓库里的基准示例:benchmarks/markdown_id/,其中的演示博文用 Markdown 写作并引用了本地图片:
JSON / YAML 数据源:用配置文件搭建整站
不止 Markdown——JSON、YAML、CSV 同样能当数据源,甚至可以用一份 YAML 定义整站页面结构:
- gatsby-transformer-json、gatsby-transformer-yaml、gatsby-transformer-csv 负责把文件内容变换为可查询节点;
- JSON 与 YAML 数据源指南展示了从零搭建“由数据驱动站点结构”的完整步骤;
- 可运行示例见 examples/using-gatsby-with-json-yaml/ 与 examples/using-csv/。
WordPress 数据源:老站内容无缝迁移
已有 WordPress 站点?不用重写内容——gatsby-source-wordpress 通过 WPGraphQL API 把文章、媒体、自定义字段全部同步进 Gatsby,让你保留熟悉的后台、却换上一张更快的静态前端:
- 只需配置你的 WordPress GraphQL 地址,插件会拉取 Posts、Pages 等所有类型;
- 官方教程:Sourcing from WordPress;
- 完整可运行起点:examples/using-wordpress/ 和 starters/gatsby-starter-wordpress-blog/;
- 同类玩法:Sourcing from Drupal 适配 Drupal 站点。
Headless CMS 接入清单:Contentful、Sanity 等几十种
传统 CMS 管内容+前端一体;Headless CMS 只负责内容与结构化数据,前端交给 Gatsby 这样的现代框架。Gatsby 官方支持几十种 CMS,其中主流选择如下:
| CMS | 源插件 | 入门材料 |
|---|---|---|
| Contentful | gatsby-source-contentful | 教程 · 示例 |
| WordPress | gatsby-source-wordpress | 教程 · 博客起点 |
| Shopify | gatsby-source-shopify | examples/ecommerce-tutorial-with-stripe/ |
| Sanity | gatsby-source-sanity(社区) | benchmarks/source-sanity/ |
| Strapi | gatsby-source-strapi(社区) | benchmarks/source-strapi/ |
| Drupal | gatsby-source-drupal | 教程 |
以 Contentful 为例,只需在gatsby-config.js填入spaceId和accessToken,文章数据即刻可查;编辑在 CMS 后台改内容,Gatsby 构建时自动同步,甚至支持内容预览(Preview API / Webhook 触发增量构建):
更多选型建议与完整插件列表,参考 How to Source Content from a Headless CMS。
数据库与私有 API:数据源没有边界
内容不止在 CMS 里。Gatsby 生态还覆盖:
- 数据库:PostgreSQL、MySQL、MongoDB、Firestore 等均有源插件,见 Sourcing from Databases 与 examples/using-mongodb/;
- 私有 API:自建接口也能接,教程见 Sourcing from Private APIs;
- 其他托管服务:Hacker News、Medium、Wikipedia、NPM 搜索等,见 Sourcing from Hosted Services 与 packages/gatsby-source-hacker-news/。
动手清单:5 步接入任意数据源 ✅
- 选定内容存放位置(Markdown 文件 / WordPress / Contentful / 数据库 / API);
- 安装对应源插件(
npm install gatsby-source-xxx)并在gatsby-config.js中配置; - 必要时加装变换插件(remark、json、sharp 等)解析内容;
- 打开 GraphiQL,用自动补全探索新出现的查询类型,验证数据可查;
- 在
gatsby-node.js的createPages中按数据动态生成页面,模板里写 GraphQL 查询。
按这份清单走一遍,你会发现 Gatsby 的数据源世界几乎没有“接入不了”的内容——选好源插件,剩下的交给 GraphQL。🚀
【免费下载链接】gatsbyReact-based framework with performance, scalability, and security built in.项目地址: https://gitcode.com/gh_mirrors/ga/gatsby
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考