这个项目能做什么
GraphQL.js 是 GraphQL 的 JavaScript 参考实现,GraphQL 是最初由 Facebook 创建的 API 查询语言。README 指向 GraphQL 规范仓库以获取语言的概览,并指出其中描述的示例以测试形式存在于本仓库中——建议新手在阅读概览的同时阅读相应的测试。
主要功能
该库提供了两项核心能力:构建类型 Schema 以及针对该 Schema 提供查询服务。Schema 通过 GraphQLSchema 和 GraphQLObjectType 定义,其字段类型为内置标量(如 GraphQLString);每个字段都可以提供一个 resolve 函数。README 指出,解析器(resolver)可以返回一个值、一个 promise 或一个 promise 数组。查询通过 graphql 函数运行,该函数接收一个 schema 和一个源字符串,并返回结果的 promise。在执行之前,该函数会验证查询在语法和语义上是否有效,否则将报告错误,例如通过一个返回带有位置信息的 "Cannot query field" 错误的示例来说明。
安装
GraphQL.js 通过 npm 作为 `graphql` 包安装,可以使用 npm、yarn 或 bun。README 还提到仓库中有一个自动维护的 `npm` 分支,该分支跟踪 17.x.x 系列中通过所有测试的最后一次提交;直接依赖该分支可用于使用尚未发布的代码,但 README 建议使用已发布的 npm 构建版本。
浏览器和打包工具使用
README 指出该库是通用目的的,既可以在 Node 服务器中使用,也可以在浏览器中使用,并以 GraphiQL 作为使用它构建的示例项目。使用 webpack 或 rollup 的项目无需特殊配置即可运行,并且仅包含所使用的库部分,因为 GraphQL.js 同时分发 CommonJS (`require()`) 和 ESModule (`import`) 文件。`package.json` 中的 `exports` 映射将运行时和打包工具引导至相应的文件;不支持 `exports` 的工具会在 `.js` 文件中找到 CommonJS 构建,在 `.mjs` 文件中找到 ESModule 构建。
项目治理与支持
欢迎通过 pull request 贡献代码,仓库由 EasyCLA 管理:参与者在贡献之前必须以个人或雇主身份签署 GraphQL Specification Membership 协议。README 还提到加入 GraphQL Foundation 是在财务上支持社区的一种方式。
变更通过 GitHub releases 跟踪。该项目采用 MIT 许可。它遵循语义化版本控制(Semantic Versioning),对最新的主版本提供全面支持(错误修复和安全更新);在新主版本发布后的 12 个月内,对前一个主版本提供功能支持(仅在不破坏兼容性的情况下回移植规范变更);对于更旧的版本则不再进行积极维护——除非该版本发布时间不足一年,则将其视为前一个主版本。目前没有长期支持(LTS)版本;鼓励用户升级到最新的稳定版本。主版本的生命周期结束(End-of-life)日期将至少提前六个月公布,之后该版本即使是关键安全问题也不会收到更新。关键安全更新适用于当前和前一个主版本。升级协助通过各版本的发布说明、文档网站中的迁移指南以及社区 Discord 频道提供。
评论
0 评分人数达到10人后显示
登录后参与讨论。