GraphQL是 Facebook 在2012年开发的一种查询语言,它使得前端和后端的通信简单而直接。而 merge-graphql-schemas-ts是一款优秀的Node.js的npm包,可以方便快捷地管理GraphQL的所有模型,是一个封装的GraphQL schema管理器。
本文将围绕如何使用merge-graphql-schemas-ts来管理GraphQL schema的所有模型来展开。
什么是GraphQL schema?
GraphQL schema是定义了查询和变更的类型以及它们之间关系的基于类型的系统。schema中包含了对象类型、字段、接口类型、枚举类型等等,用来描述数据的结构、对数据的查询和修改操作等。
什么是 merge-graphql-schemas-ts?
merger-graphql-schemas-ts是一个 GraphQL schema管理器。它提供了一组简单工具,可帮助 GraphQL 开发人员更轻松地组织和维护 GraphQL schema。
使用 merge-graphql-schemas-ts,开发人员可以把一个 GraphQL schema 拆分成小部分,并且在这些小部分之间保持表现形式的一致性。同时也可以轻松地添加、更新或删除小片段,而不会破坏其他部分。
为什么要使用merge-graphql-schemas-ts?
在日常开发中,GraphQL schema的规模和复杂性逐渐增强。一个大型schema往往包含了多个type,query和mutations等部分。开发人员常常需要在修改一个模型时找到模型所在的位置然后进行修改。
而merge-graphql-schemas-ts可以帮助开发人员更方便地进行版本控制。通过将不同的文件分别处理成不同的模块,避免重复定义相同的type、input、enum等。
安装merge-graphql-schemas-ts
在命令行中输入以下命令即可安装merge-graphql-schemas-ts
npm install merge-graphql-schemas-ts --save
使用示例:
动态加载schema
在GraphQL schema中,schema的定义是必须完整定义的,也就是说schema里面所有的type、query和mutations等都需要在定义时一口气给出。
而使用merge-graphql-schemas-ts可以分模块对schema进行定义,这样对于较为庞大的schema可以分模块加载,不同模块之间相互独立可以大大提高代码复用率和可维护性。
-- -------------------- ---- ------- ------ ----- ---- --------------------------- ------ - ------------- - ---- ---------------------------- ------ - ------------- - ---- ---------- ----- ---------- - ----------------------------------------- - ----------- ------ -- ----- -------- - ----------------- - ---- ---- --- ------ ----- ------ - --- --------------- ------ -------- --------- ---------- ---
使用resolver实现API
使用merge-graphql-schemas-ts可以很方便地把graphql文件中定义的resolver以正确的方法注入到GraphQL Api中。
-- -------------------- ---- ------- ------ - -------------------- - ---- ------------------------ ------ - --------------- ------------- - ---- ----------------------- ------ - ------------- - ---- ---------------------------- ------ - ------------- - ---- ---------- ----- -------------- - -------------------------------------------- - ----------- ------ --- --- -------- - ----------------------------------------- - ----------- ----------- --- -------- - ------------------------ ----- --------- - ------------------------------- ------ ----- ------ - ---------------------- --------- ---------- ---
上述代码片段中,resolvers数组会自动从src/modules/**/resolvers.ts
目录下进行收集。在文件中需要使用一个类export一个resolver class,并把该类挂载到一定的query或mutation或Types上。
其他API使用方法:
-- -------------------- ---- ------- ------ - ----------- -------------- - ---- --------------------------- ------ - -- ---- ---- ------- ------ - ---- - ---- ------- -- ------- --- ----- ---- - ------ ------ ----- ---------- - ------------------------- ------------------ ------ ----- -------- - ----------------------- -- ------- --- --------- ---- - ------ ------ ----- -------------- - ------------------------- --------------------- ------ ----- --------- - ------------------------------- -- ------- --- ------ ---- - ------ ------ ------ ----- ------ - ---------------------- --------- ---------- ---
总结
通过上述示例代码,我们可以更加深入地了解如何使用merge-graphql-schemas-ts来管理GraphQL schema的所有模型。merge-graphql-schemas-ts对于大型GraphQL schema项目,能够提高效率,减少冗余代码,增加代码可复用性,并且通过分模块化可以提高代码维护性。在使用过程中需要注意文件的引入路径等问题。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/600562e881e8991b448e0949