源插件是 Gatsby 数据层架构的基础组成部分。它们负责从外部系统获取数据,并将其转换为填充 Gatsby GraphQL 数据层的节点对象。本文档解释了源插件在 Gatsby 代码库中的工作方式、核心架构和实现模式。
有关数据源引入后处理数据转换插件的信息,请参阅转换插件。有关图像处理功能,请参阅图像处理。
源插件是外部数据源和 Gatsby 内部数据层之间的桥梁。它们实现了 Gatsby 在构建过程中调用的特定生命周期方法,其中 sourceNodes 是最重要的。
来源:packages/gatsby-source-contentful/src/gatsby-node.js45-81 packages/gatsby-source-contentful/src/source-nodes.js52-100
源插件在 Gatsby 构建过程中遵循特定的生命周期
onPreBootstrap,允许插件设置先决条件createSchemaCustomization 来定义 GraphQL 类型sourceNodes 来获取数据并创建节点来源:packages/gatsby-source-contentful/src/gatsby-node.js46-81 packages/gatsby-source-contentful/src/source-nodes.js52-187
源插件由几个协同工作的关键组件组成
每个源插件都接受与其连接的数据源相关的特定选项,例如 API 凭据、基本 URL 和过滤选项。
来源:packages/gatsby-source-contentful/src/plugin-options.js19-26 packages/gatsby-source-drupal/src/plugin-options.ts
源插件实现专门的逻辑来从外部系统获取数据,处理身份验证、分页和错误情况。
来源:packages/gatsby-source-contentful/src/fetch.js236-374 packages/gatsby-source-contentful/src/fetch.js380-418
获取数据后,源插件将其转换为适合 Gatsby 节点系统的结构。这通常包括
来源:packages/gatsby-source-contentful/src/normalize.js68-82 packages/gatsby-source-contentful/src/normalize.js84-107 packages/gatsby-source-contentful/src/normalize.js131-240
最后一步是使用 createNode 操作在 Gatsby 的数据层中创建节点。
来源:packages/gatsby-source-contentful/src/normalize.js409-597 packages/gatsby-source-contentful/src/normalize.js814-900
许多源插件(如 Contentful 和 Drupal)处理媒体文件,这需要
gatsby-source-filesystem 创建文件节点来源:packages/gatsby-source-contentful/src/download-contentful-assets.js29-102 packages/gatsby-source-drupal/src/normalize.ts26-142
让我们以 Contentful 源插件为例
来源:packages/gatsby-source-contentful/src/gatsby-node.js6-12 packages/gatsby-source-contentful/src/source-nodes.js52-106 packages/gatsby-source-contentful/src/create-schema-customization.js72-212
另一个例子是 Drupal 源插件
来源:packages/gatsby-source-drupal/src/gatsby-node.ts45-135 packages/gatsby-source-drupal/src/normalize.ts10-26
在检查多个源插件时,我们可以识别出常见的模式
大多数源插件都需要处理与其数据源的身份验证
来源: packages/gatsby-source-contentful/src/fetch.js98-157
当处理大型数据集时,源插件会实现分页策略
来源: packages/gatsby-source-contentful/src/fetch.js425-456
强大的错误处理对源插件至关重要
来源: packages/gatsby-source-contentful/src/fetch.js160-228 packages/gatsby-source-contentful/src/source-nodes.js322-331
现代源插件通过跟踪自上次构建以来发生的变化来支持增量构建
来源: packages/gatsby-source-contentful/src/source-nodes.js138-144 packages/gatsby-source-contentful/src/source-nodes.js187-189
源插件通常为其选项定义一个模式,以验证用户配置
来源: packages/gatsby-source-contentful/src/gatsby-node.js83-182
源插件是 Gatsby 数据层的关键组成部分,负责将外部数据源的数据拉取到 Gatsby 的 GraphQL 数据层中。它们遵循一致的提取、规范化和创建节点模式,同时处理身份验证、分页和错误管理等复杂问题。
通过了解源插件的工作原理,开发人员可以更有效地使用现有插件,并为独特的数据源创建自定义解决方案。