发布于 2026-01-06 1 阅读
0

为什么 graphql 对 Gatsby 和现代 Web 开发如此重要?DEV 的全球展示挑战赛由 Mux 呈现:展示你的项目!

为什么 GraphQL 对 Gatsby 和现代 Web 开发如此重要

由 Mux 赞助的 DEV 全球展示挑战赛:展示你的项目!

简而言之,Gatsby 使用 GraphQL 作为通用接口来查询数据,而无需对数据源做任何假设。这样一来,您就可以添加、删除或更改数据源,而不会对代码产生进一步的影响。

ORM 的力量

作为一名热爱 JavaScript 的 Ruby on Rails 开发人员,我见过并使用过许多 Node.js 框架,但从未真正爱上过任何一个,其中一个主要原因就是 ActiveRecord。

ActiveRecord(在 Rails 社区中通常简称为 AR)是 Ruby on Rails 自带的 ORM(对象关系映射),它允许你使用面向对象的接口与数据库进行交互,这种接口通常比纯 SQL 查询更具可读性和表达力。虽然 AR 的主要特性之一是其强大而富有表现力的 API,但它最吸引人的地方或许在于它在数据和代码之间增加了一个额外的层。

添加这一额外的通信层使得开发人员能够在不同的数据库引擎甚至数据库范式(SQL 或 NoSQL)之间切换。虽然在应用程序中切换数据库引擎并不常见,但您通常会在不同的项目中使用不同的数据源。

ActiveRecord 允许您在不同的项目中切换数据库引擎,选择最适合您应用程序的引擎,而无需重新学习或调整任何以前的实现,最终使您在开始的每个新项目中都能更加高效。

超越 ORM

像 ActiveRecord 这样的 ORM 工具功能强大,当以数据库作为信息源时,能够带来巨大的优势(当然也存在一些不足)。但在现代 Web 开发中,数据来源往往更加多样化,涵盖了从传统数据库到 Web 服务、文件系统、云数据库等等。现代 Web 项目通常会从多种不同的数据源中获取数据,而 ORM 工具本身并不具备处理所有这些数据源的能力。

引入 GraphQL。根据其官网(https://graphql.org/)的描述,GraphQL 是对您的 API 的查询。虽然人们首先想到的可能是 Web 服务,但 API 实际上可以是任何提供与您的数据通信方式的来源,而这正是现代 Web 开发变得越来越有趣的地方。

鉴于 GraphQL 对数据源没有任何要求,只要求它有一个通信接口,因此你可以像 Gatsby 一样使用 GraphQL 从任何给定的数据源查询数据,稍后会详细介绍。

这为您提供了额外的抽象层,使您能够将您的应用程序连接到不同的数据源(每个数据源可能都有不同的 API),并使用通用 API(GraphQL 查询语言)与它们进行通信。

在当今数据来源众多且多样化的Web开发环境中,这一优势显得尤为重要。拥有一个与任何数据源通信的通用API,意味着您可以根据每个项目的具体需求,轻松地添加、删除或更改数据源,而无需修改代码或重新学习任何内容。

Gatsby 和 GraphQL

Gatsby 使用 graphql 的原因有很多,这些原因在文档中进行了详细的解释(https://www.gatsbyjs.org/docs/why-gatsby-uses-graphql/),其中之一是作为与您正在使用的任何数据源进行通信的一种方式。

请记住,Gatsby 对您使用何种数据源构建 Web 应用程序没有特定要求,因此,框架必须拥有一个对所有数据源都通用的通信接口。而这正是 Gatsby 和 GraphQL 完美契合之处。

通过这种组合,您可以将 WordPress GraphQL 服务器或 WordPress REST API 用作一个项目的数据源,并将文件系统与云数据库一起使用,用于另一个项目,而无需重新学习框架或调整可在多个项目中重用的 React 组件。

 源插件

GraphQL之所以能够适应任何数据源,是因为它是一个高度抽象的API,没有针对任何数据源的具体实现。这意味着对于任何数据源,你都需要自行实现GraphQL引擎与数据源API之间的通信。

Gatsby 通过插件机制以及围绕该框架的活跃社区解决了这个问题。该社区已经为数百种数据源开发了众多插件。这意味着任何开发者只需实现一次 GraphQL 与任何数据源的集成,然后,如果将其打包成插件,该实现就可以在不同的项目和开发者之间重复使用。

这使得 Gatsby 成为首批允许使用多个数据源和 API 的 Web 框架之一,而无需您重新学习任何内容、调整您当前的实现或修改代码,即可在更改现有项目的数据源时使用。

这感觉就像是 Rails 的 ActiveRecord,但功能更强大。正因如此,在探索了多年的 Node.js 框架之后,Gatsby 才成为使用 JavaScript 开发现代 Web 应用程序的正确方式。

文章来源:https://dev.to/uriel_hedz/why-graphql-is-so-important-for-gatsby-and-modern-web-dev-23ak