Merge GraphQL Schemas Temp (以下简称 MGST)是一个用于将 GraphQL 的模型别名、枚举类型等合并并封装为单个模块的 npm 包。对于大型的 GraphQL 项目,使用 MGST 可以帮助您更好地组织代码,减少重复的代码量,提高开发效率。
本文将为您介绍如何使用 MGST。
安装
您可以通过 npm 进行安装:
npm install merge-graphql-schemas-temp
使用
下面是一个简单的示例,演示了如何使用 MGST 合并模式:
-- -------------------- ---- ------- -- --------- ------ - -------------------- - ---- --------------- ------ - ----------- -------------- - ---- ---------------------------- ------ - -- --------- ---- -------------- ------ - -- ------------- ---- ------------------ ------ - -- --------- ---- -------------- ------ - -- ------------- ---- ------------------ -- -- ----- ----- ----- - ---------------------- ----------- - ---- ---- -- -- -- --------- ----- --------- - ------------------------------ --------------- ----- ------ - ---------------------- --------- ------ ---------- -- ------ ------- ------
在示例中,我们将合并了两个 GraphQL 模块:user 和 post。在每个模块中,我们分别定义了 Types(类型)和 Resolvers(解析器)。接下来,我们使用 mergeTypes
和 mergeResolvers
方法,将这些模块合并为单个模块,最后使用 makeExecutableSchema
创建出可执行的 schema。
高级使用
MGST 提供了多种选项为您的 GraphQL 项目提供更高级的组织方式。
Filter Type Definitions
使用 mergeTypes
函数的 exclude
和 patterns
参数,您可以排除一些类型定义或文件。
const excludedTypes = ['UserEmailSubscription', 'UserMobilePhone'] const validPatterns = ['*.graphql', '*.gql'] const types = mergeTypes([userTypes, postTypes], { all: true, exclude: excludedTypes, patterns: validPatterns, })
在上面的代码中,我们定义了一个名为 excludedTypes
的数组,包含一些我们不想合并的类型。我们还定义了一个名为 validPatterns
的数组,它包含一些我们希望在合并中包含的文件模式。在使用 mergeTypes
函数时,我们将这些参数作为选项传递。MGST 将从我们的模块中排除我们指定的类型,并仅合并符合我们指定的文件模式的文件。
Filter Resolvers
同样地,使用 mergeResolvers
函数的 exclude
和 patterns
参数,您可以排除一些解析器或文件。
const excludedResolvers = ['Mutation', 'Subscription'] const validPatterns = ['*.js'] const resolvers = mergeResolvers([userResolvers, postResolvers], { exclude: excludedResolvers, patterns: validPatterns, })
在上述代码中,我们定义了一个名为 excludedResolvers
的数组,其中包含我们不想包含在合并结果中的解析器。同样,我们将这个数组作为 selected 参数传递给 相应的函数。
具有名称的模块合并
作为最后一个示例,我们可以看一下如何将模块合并到具有特定名称的命名空间中。我们可以使用 mergeTypesByName
和 mergeResolversByName
函数并将选项指向新名称空间即可。
-- -------------------- ---- ------- -- --------- ------ - -------------------- - ---- --------------- ------ - ----------------- --------------------- - ---- ---------------------------- ------ - -- --------- ---- -------------- ------ - -- ------------- ---- ------------------ ------ - -- --------- ---- -------------- ------ - -- ------------- ---- ------------------ ----- ----- - ------------------ ----- ---------- ----- ---------- ---- ----- -- ----- --------- - ---------------------- ----- -------------- ----- -------------- -- ----- ------ - ---------------------- --------- ------ ---------- -- ------ ------- ------
在上面的示例中,我们首先使用 mergeTypesByName
和 mergeResolversByName
函数将类型和解析器分别分配给用户和帖子的命名空间。然后,我们通过 makeExecutableSchema
创建可执行的 schema。这种方式能更好的组织大型 GraphQL 项目,避免名字重复,提高代码集中性。
结论
MGST 提供了许多功能来更好地组织您的 GraphQL 代码。通过使用 MGST 您可以将 GraphQL 的类型和解析器合并到一个大的 GraphQL 模块中,从而减少重复的代码并更高效地组织代码结构。此外,MGST 还提供了一些高级选项,如过滤和姓名空间在项目组件化、复杂度等方面得到了广泛应用。
本文的示例代码展示了如何使用 MGST 的基本用法和高级用法。我们期望你通过本文的演示了解了 MGST 的使用方式,并在您的项目中使用它来提高效率。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60066f3e1d8e776d08040aaa