🔮 Graphile的水晶单体仓库
在Graphile,我们如此热爱GraphQL,以至于我们用它来命名我们自己!这个仓库包含了许多与GraphQL相关的Graphile包(或与GraphQL相关的包相关的包,或与这些包相关的包...);两个主要项目是Grafast和PostGraphile,但还有许多其他包,其中相当多可以独立使用 - 详情请见下文。
Grafast:GraphQL.js的前沿规划和执行引擎 ─ 将其作为GraphQL.js的execute
方法的直接替代品,通过从传统解析器转移到Grafast "计划解析器",您将能够利用GraphQL请求的声明性特性以最高效的方式执行您的业务逻辑,从而减少服务器负载并让客户更满意。如果您正在构建自己的GraphQL模式,并希望在不付出太多额外努力的情况下获得最佳性能和效率,请使用它。
PostGraphile:一种极其低成本的方式来构建一个结构良好且高性能的GraphQL API,主要由PostgreSQL数据库支持。我们的主要关注点是性能、自动最佳实践和可定制性/可扩展性。如果您有PostgreSQL数据库,并希望将其用作自动生成的GraphQL API的"真实来源"(您仍然可以对其进行重大更改),请使用它。注意:感谢graphile-export,您也可以将其用作API的起点,然后自行管理。
➡️ PostGraphile V4请参见legacy 分支 |
---|
项目概要
以下是主要包的粗略breakdown:
- grafast - 独立的前沿GraphQL规划和执行引擎;完整描述见上文。
- @dataplan/pg - 用于与PostgreSQL交互的计划类
- @dataplan/json - 用于编码/解码JSON的计划类
- graphile-export - 一个包,在正确的情况下可以将内存中动态构建的GraphQL模式导出为可导入和执行的原始JavaScript源代码
- eslint-plugin-graphile-export - 一个ESLint插件,帮助您编写与graphile-export兼容的代码
- jest-serializer-graphql-schema - 一个简单的Jest序列化器,理解GraphQL模式,因此不会在快照中填充
\"\"\"
等内容 - graphile-config - 处理Graphile软件插件、预设和配置文件的模块 - 一个通用配置层
- graphile-build - 一个从"插件"构建GraphQL.js模式的系统,特别适用于自动生成的GraphQL API(例如PostGraphile使用此系统),但对于具有大量模块化但广泛使用的关注点(如连接、命名等)的手动编写模式也很有用
- graphile-build-pg -
graphile-build
的插件,理解@dataplan/pg
(即PostgreSQL)服务,可以为这些数据库资源生成类型、关系、突变等
- graphile-build-pg -
- @graphile/lru - 一个_极度_高性能的最近最少使用缓存(可能是Node.js中最快的通用LRU缓存),功能集极其简单;您几乎肯定更想要@isaacs的
lru-cache
而不是这个 - pg-sql2 - 一个用于使用标记模板字面量构建高度动态的防SQL注入PostgreSQL查询的库
- pg-introspection - 一个为PostgreSQL提供强类型内省的库,从PostgreSQL文档生成,提供每个内省字段的最新详细信息
- postgraphile - 整合了上述大多数技术;完整描述见上文
众筹开源软件
为了帮助我们可持续地开发这个软件,我们请所有使用它的个人和企业通过赞助来帮助支持其持续维护和开发。
点击这里了解更多关于赞助商和赞助的信息。
请给予我们的特色赞助商一些爱 🤩:
* 赞助整个Graphile套件
为什么称为"crystal"单体仓库?
最初,现在的Grafast(之前称为DataPlanner)被称为代号"Graphile Crystal"。这导致我们在公开宣布之前使用🔮表情符号来代表这个项目,作为知情人士的暗号。现在Grafast成为我们的规划和执行引擎的名称,我们需要为单体仓库起一个不太特定于GraphQL的名称(因为这里有一些不完全与GraphQL相关的东西),我们认为将其称为Crystal单体仓库将纪念我们对这个项目的最初昵称。关于这个名字是受到维护者们的水晶婚纪念日启发的传言被大大夸大了。