首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

GraphQL在现代Web应用中的应用与优势

前端设置(使用Apollo Client)接着,我们需要在前端应用中配置Apollo Client,与我们的GraphQL服务器通信:npm install apollo-boost @apollo/client...graphql# client.jsimport ApolloClient from 'apollo-boost';import { InMemoryCache } from '@apollo/client...3. 查询结构:字段和参数查询结构由字段和参数组成。在上面的查询示例中,user是字段,id和email是user字段的子字段。参数id: 1用于定制查询。4....客户端代码示例(使用Apollo Client)import { gql, useQuery } from '@apollo/client';const GET_USERS_AND_POSTS = gql...客户端控制:客户端可以决定获取多少数据,何时获取,提高了用户体验。缓存优化:客户端可以根据返回的数据结构更容易地进行缓存策略的实施。

6110

GraphQL最突出的架构优势是什么?

https://youtu.be/EDqw-sGVq3k 数据图是虚拟层,位于我们的客户端应用程序和 GraphQL 服务器之间。...Apollo-link-state(现已直接放入 Apollo Client 2 和 3 中)让开发人员可以编写几乎同时解决远程状态和本地状态的查询。远程状态(位于服务器上)感觉比之前近多了。...locally } } }`; 在主要用于获取远程资源的查询中,我们可以使用 @client 指令来引用要基于一个客户端模式从本地缓存中获取的属性。...数据图从客户端延伸到服务器,并为现代 Web 应用程序中获取数据和更改状态时面临的最常见基础架构问题提供了答案 为了通过 GraphQL 与后端服务通信,Apollo Client 公开了几种客户端方法...在架构层面,由于 GraphQL 仅向客户端公开单个端点,因此它满足了这一原则。 客户端隐藏了字段解析机制的所有复杂性,它只需关注如何在 GraphQL 服务器之上构建即可。

2.1K20
您找到你想要的搜索结果了吗?
是的
没有找到

前端开发使用GraphQL——VUE3使用GraphQL

之前一直都是使用vue2,最近有新的项目使用了vue3,这里记录下在vue3环境下,使用GraphQL的一些经验。如果你使用的是vue2,建议直接使用vue-apollo组件。 1....前端开发使用GraphQL——Nestjs/GraphQL项目搭建 背景 新项目采用了vue3开发,而目前vue对应的QraphQL模块vue-apollo对使用typescript开发的vue3...框架支持不是很好(目前正在开发的Vue Apollo 4 将支持 Vue 3),没法利用typescript来检查GraphQL接口拉回来的数据,这里记录一下处理这些问题的方式。...// 你需要在这里使用绝对路径 uri: 'http://localhost:3000/graphql', }) // 缓存实现 const cache = new InMemoryCache...后面我们就可以使用这些type去校验GraphQL接口返回的内容。

3.8K20

怎样使用 apollo-link-state 管理本地数据

以上是 Apollo Client 的数据流架构图。 GraphQL:一旦学会,随处可用 关于 GraphQL 有一个常见的误区:GraphQL 的实施依赖于服务器端某种特定的实现。...事实上,GraphQL 具有很强的灵活性。GraphQL 并不在乎请求是要发送给一个 gRPC 服务器,或是 REST 端点,又或是客户端缓存。...Apollo Link 使得在 Apollo Client 中管理本地的数据成为可能,从一个 GraphQL 服务器中获取数据,可以使用 HttpLink,而从 Apollo缓存中请求数据,则需要使用一个新的...@client 指令 当应用的 UI 触发了一个 mutation 之后,Apollo 的网络栈需要知道要更新的数据存在于客户端还是服务器端。...1.0 版本前的路线图 尽管 apollo-link-state 的开发已足够稳定,可以投入实际应用的开发了,但仍有一些特性我们希望能尽快实现客户端数据模式:当前,我们还不支持对客户端数据模式结构的类型校验

2.3K100

在 redux 应用中使用 GraphQL

您需要编写自定义代码来调用服务器接口,解释数据,对其进行规范化并将其插入到存储中 - 同时跟踪各种错误和加载状态。 在本教程中,您将学习如何通过 Apollo Client 来获取和管理数据。...快速的启动一个服务端环境 启动一个 redux 脚手架 增加一个 GraphQL 客户端 (Apollo Client) 使用 GraphQL 获取数据 获取更多的数据 接下来要做的 1....客户端正在运行,现在是开始添加 GraphQL 客户端的时候了。我们的目标是使用 GraphQL 查询,从服务器轻松获取数据并将其呈现在着陆页(HomeView)中。 3....增加一个 GraphQL 客户端Apollo 客户端) 安装 apollo-client, react-apollo, 和 graphql-tag。...$ npm install apollo-client react-apollo graphql-tag --save 打开 Redux 应用的入口文件 src/containers/AppContainer.js

1.9K10

GraphQL到底怎么使?看看智联前端团队技术沉淀

文章会以 JavaScript 生态和 JavaScript 客户端调用与服务端开发体验例。...在执行字段 Resolver 之后会得字段的值,如果值的类型对象,则会继续执行其下层字段的 Resolver, contractedAuthor() 后得到值类型 Author,会继续执行 name...几乎是 Apollo GraphQL: Apollo 提供的实现GraphQL 生态,内容丰富,不止一套引擎,还提供了纯客户端使用(不局限JavaScript)多种工具。...提供了生成可执行 Schema 的函数和执行 Schema 生成返回值的函数(graphql、execute 函数),使用执行方法可快速将现有 API 接口快速改造 GraphQL 接口。...调试:由于我们调用 GraphQL 接口时(:xxx/graphql/im)无法像 RESTful 接口那样(:xxx/graphql/im/message、xxx/graphql/im/user)

2.3K20

【译】Graphql, gRPC和端对端类型检验

由于GraphQL查询可以一次请求多种资源,因此可以减少网络请求的次数。 未来可以很方便地增加服务端接口。...使用apollo-client和react-apollo简化了前端代码对缓存和数据的管理。 灵活的查询方式方便我们在未来构建移动端以及内部应用。...下面是我们所体会到的gRPC的主要优势: 生成对应我们全部后端服务接口客户端类型代码是一件灰常简单的事情,我们使用这个插件来生成TypeScript definitions。...使用类型化的客户端代码是一件令人愉快的事情。每一个服务端所对应的客户端代码都是基于后端接口的请求和响应信息来进行类型化。...我们不需要再去查询每个API的接口文档,因为客户端代码里拥有开发者和IDE所需要知道的全部信息。并且我们知道它们一定是正确的,因为它们是基于proto文件自动生成的。

3.1K20

你还在用 REST API 吗?

因此,客户端必须发出多个请求才能获取应用程序所需的全部内容。 什么是 GraphQL?...GraphQL 的优势 检索精确的数据,无任何多余数据。在 GraphQL 中,可以得到我们所请求的内容,这是一个很大的优势。 客户端开发速度更快。...如果使用 REST,我们至少要发出 2 到 3 个请求,类似于: /user/以获得用户(作者)的详细信息,比如名称。 /user//posts 获取该用户发布的帖子列表。...自动缓存 REST 能自动生效缓存,而 GraphQL 则没有自动缓存系统,但是可以借助 Apollo Client、Relay 等客户端实现缓存。...但是,当使用 Apollo Client、Relay 等客户端时,它也能很容易处理错误。 结 论 与 REST 相比, GraphQL 当然更具优势,但它可能并不总是最佳实践。

1.5K10

GraphQL+Koa2实现服务端API结合Apollo+Vue

GraphQL 对你的 API 中的数据提供了一套易于理解的完整描述,使得客户端能够准确地获得它需要的数据,而且 没有任何冗余。...从这个意义上说,它是数据库无关的, 而且可以在使用 API 的任何环境中有效使用,我们可以理解 GraphQL 是基于 API 之上的一 层封装,目的是为了更好,更灵活的适用于业务的需求变化 GraphQL...Scala、Ruby 客户端语言:js、React + React Native、Angular、Vue.js、Apollo Link、Native iOS、Native Android、 Scala.js...将它与vue-apollographql一起安装: npm install vue-apollo graphql apollo-boost --save 在src/main.js中引入apollo-boost...provider Provider保存了可以在接下来被所有子组件使用的Apollo客户端实例 const apolloProvider = newVueApollo({     defaultClient

5.1K42

写在 2021: 值得关注学习的前端框架和工具库

Client Apollo-Client[35],来自ApolloGraphQL[36]的作品,只有React版本是官方团队在维护,Vue版本的被挪到Vue团队了(VueUI有一部分就是基于Apollo-Client-Vue...强大的地方在于实现了一套GraphQL缓存方案(GraphQL不像REST API那样可以用URL作为缓存的key,它只有单个schema,要缓存必须基于Schema拍平整个数据结构,然后再基于各个field...GraphQL-Zeus[41],小而美的GraphQL客户端,集成了Code-Generator能力。...在TS中这个工具的主要能力就是生成TS的类型定义,同时它的插件体系还提供了更多的额外能力,Apollo-Client的插件,让你可以直接使用封装好的的useXXXQuery等,前端连查询语句都不用写了...Studio[73],ApolloGraphQL提供的GraphQL API管理工具,配合Apollo-Server的插件可以实现埋点统计、可视化分析等功能。

4.2K10

用TS+GraphQL查询SpaceX火箭发射数据

本文将引导你使用 React 和 Apollo 构建客户端应用程序,并调用 SpaceX 的公共 GraphQL API ,来显示有关的发射信息。...apollo-boost 包含了查询 API 和在内存中缓存数据所需的工具, react-apollo React提供绑定, react-apollo-hooks 在 React Hook 中包装了...Apollo 查询, graphql-tag 用于构建我们的查询文档, graphql 是一个对等依赖项,它提供了 GraphQL 实现的细节。...将生成的目标文件夹更新 src/generated/graphql.tsx (react-apollo 插件需要 .tsx)。 不要生成 introspection file。...初始化Apollo客户端 在 src/index.tsx 中,我们需要初始化 Apollo 客户端并用 ApolloProvider 组件将 client 添加到 React 的上下文中。

3K20

写在2021: 值得关注学习的前端框架和工具库

Client Apollo-Client,来自ApolloGraphQL的作品,只有React版本是官方团队在维护,Vue版本的被挪到Vue团队了(VueUI有一部分就是基于Apollo-Client-Vue...强大的地方在于实现了一套GraphQL缓存方案(GraphQL不像REST API那样可以用URL作为缓存的key,它只有单个schema,要缓存必须基于Schema拍平整个数据结构,然后再基于各个field...GraphQL-Zeus,小而美的GraphQL客户端,集成了Code-Generator能力。...在TS中这个工具的主要能力就是生成TS的类型定义,同时它的插件体系还提供了更多的额外能力,Apollo-Client的插件,让你可以直接使用封装好的的useXXXQuery等,前端连查询语句都不用写了...提供的GraphQL API管理工具,配合Apollo-Server的插件可以实现埋点统计、可视化分析等功能。

2.8K10

GraphQL

实现 一个用jQuery和HTML搭的简单客户端网页 为了尽量简单地对比这两种技术,项目故意设计得很简单 想跟着做的话,先打开3个终端窗口,再cd到项目库的RESTful、GraphQLClient目录...fields=title,image&actor_fields=name,image 现在,这差不多是我们的简单应用的最佳实现了,但它引入了一个坏习惯,客户端应用中特定的页面创建订制化接口。...说到这里,开发者REST API的扩展付出了巨大代价。接口数量瞬间爆炸,不一致性越来越明显,版本控制越来越困难 GraphQL在开发体验方面确实有过人之处。...如果考虑用React构建应用的话,强烈推荐看看Relay或者Apollo client 总结 GraphQL提供了一些自用的强大工具集,用来构建高效的数据驱动应用。...,弱化的接口更接近SQL语句之类的东西),如果每一个字段都对应一个查询接口,那么很容易实现一个通用的接口管理层,来完成GraphQL的所有功能。

1.5K40
领券