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

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

GraphQL 并不在乎请求是要发送给一个 gRPC 服务器,或是 REST 端点,又或是客户端缓存GraphQL 是一门针对数据的通用语言,与数据的来源毫无关联。...Apollo Link 使得在 Apollo Client 中管理本地的数据成为可能,从一个 GraphQL 服务器中获取数据,可以使用 HttpLink,而从 Apollo缓存中请求数据,则需要使用一个新的...Resolvers 在使用 Apollo Client 管理应用状态后,Apollo cache 成为了应用的单一数据源,包括了本地和远端的数据。那么我们应当如何查询和更新缓存中的数据呢?...@client 指令 当应用的 UI 触发了一个 mutation 之后,Apollo 的网络栈需要知道要更新的数据存在于客户端还是服务器端。...apollo-link-state 使用 @client 指令来标记只需存在于客户端本地的字段,然后,apollo-link-state 会在这些字段上调用相应的 resolver 方法。 .

2.3K100

「首席架构师推荐」React生态系统大集合

GraphQL规范 GraphQL工具 GraphQL教程 GraphQL实现 服务器集成 数据库集成 Relay 中继一般资源 中继教程 中继工具 Apollo Apollo综合资源 影片 重要会谈...for React应用程序 react-cache-me-outside - React应用程序的OTA数据更新。...- GraphQL Java实现 sangria - Scala GraphQL客户端和服务器库 graphql-php - GraphQL参考实现的PHP端口 graphene - Python中的...脚本,用于更新中继API Apollo 基于GraphQL的数据堆栈 阿波罗综合资源 阿波罗官方网站 Apollo GitHub 阿波罗博客 Apollo Slack Apollo工具 react-apollo-redux...Wolfenstein用React编写的渲染层 Flux ImmutableJS TodoList Hapi + React + Flux用户管理系统 Redux TodoMVC React / Redux CRUD在本地存储中具有持久状态

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

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

基本的全栈 Apollo Client+Server 应用程序栈 4数据图让远程状态更接近客户端本地状态 所有前端框架都需要解决的三个挑战分别是数据存储、更改检测和数据流。...Apollo-link-state(现已直接放入 Apollo Client 2 和 3 中)让开发人员可以编写几乎同时解决远程状态和本地状态的查询。远程状态(位于服务器上)感觉比之前近多了。...isLiked @client # signal to resolve locally } } }`; 在主要用于获取远程资源的查询中,我们可以使用 @client 指令来引用要基于一个客户端模式从本地缓存中获取的属性...简化的数据获取架构,其中视图可以是任意前端框架——nerdwallet 数据图在连接的两端均有 Apollo 服务器和客户端,它可以简化获取逻辑、错误逻辑、重试逻辑、分页、缓存、optimistic UI...5GraphQL 是自文档化的 维护 RESTfulAPI 时需要做的一件麻烦事是保持文档及时更新和内容全面。 RESTfulAPI 有两处可以更改。

2.1K20

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

这里的服务端不仅指网络服务,用 GraphQL 作为中间层数据引擎提供本地数据的获取也是可行的,GraphQL 规范并没有对数据源和获取方式加以限制。...几乎是 Apollo GraphQL: Apollo 提供的实现和 GraphQL 生态,内容丰富,不止一套引擎,还提供了纯客户端使用(不局限JavaScript)多种工具。...apollo:提供了开箱即用的完整的 Node.js 服务;提供了拼接 Schema(本地、远端)的方法,使 GraphQL 服务拆分成为可能;提供了客户端可用的数据获取管理工具。...文档化:GraphQL 的内省功能可以根据 Schema 生成实时更新的 API 文档,且没有维护成本,对于调用方直观且准确。...总结 综合来看,可用的 GraphQL 服务(不考虑拿 GraphQL本地数据管理的情况)的重心在服务提供方。作为 GraphQL 的调用方是很爽的,且几乎没有弊端。

2.3K20

PayPal大规模采用GraphQL的探索和实践

我们面临的问题是,当我们构建一个新版本时,与旧版本集成的客户端如果不与新版本重新集成,就不会收到这些更新。有时,新版本中的文档或参数会发生更改。...有了 GraphQL,我们可以发送更新客户端不再需要担心版本的更新。由于所有更新都发布到了 GraphQL 中的一个端点,因此客户端可以在需要时获取更新的资源,而无需重新集成到新版本。...您还可以在 API 发布后立即获得更新,而无需更新 SDK。 统一体验:PayPal 中的每个流程都有自己的 NodeJS 应用程序,每个团队都有自己的 ReactJS 实现。...通用库包括用于日志记录的插件、用于数据分类的指令、Apollo 和 playground 的插件、CLI、异常类和 Apollo graph 变体。 前端和后端的模板示例程序。...这就是促使我们使用 Apollo Federation 构建了一个单图网关的原因。 5 采用 GraphQL 有哪些优势?

3K20

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

GraphQL 对你的 API 中的数据提供了一套易于理解的完整描述,使得客户端能够准确地获得它需要的数据,而且 没有任何冗余。...Scala、Ruby 客户端语言:js、React + React Native、Angular、Vue.js、Apollo Link、Native iOS、Native Android、 Scala.js...查询语言 GraphQL规范支持两种操作 query:仅获取数据(fetch)的只读请求 mutation:获取数据后还有写操作的请求 新版本的GraphQL还支持subscription,这是为了处理订阅更新这种比较复杂的实时数据更新场景而设计的操作.../dump(本地数据文件路径) 3.2 express集成GraphQl https://github.com/graphql/express-graphql npm install express-graphql...将它与vue-apollographql一起安装: npm install vue-apollo graphql apollo-boost --save 在src/main.js中引入apollo-boost

5.1K42

在 redux 应用中使用 GraphQL

快速的启动一个服务端环境 启动一个 redux 脚手架 增加一个 GraphQL 客户端 (Apollo Client) 使用 GraphQL 获取数据 获取更多的数据 接下来要做的 1....如果我们不想在响应中看到作者的姓氏和幸运饼干签语条,可以更新成以下查询: ? 可以看到,这正是我们想要的形式。现在,我们已经确认服务器运行正常,并返回正确的响应,接下来让我们开始构建客户端。 2....客户端正在运行,现在是开始添加 GraphQL 客户端的时候了。我们的目标是使用 GraphQL 查询,从服务器轻松获取数据并将其呈现在着陆页(HomeView)中。 3....增加一个 GraphQL 客户端Apollo 客户端) 安装 apollo-client, react-apollo, 和 graphql-tag。...深入研究 GitHunt 的源码也是一种很好的学习方式,这是一个全栈的 Apollo 客户端及服务端 app 样例。

1.9K10

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...客户端代码示例(使用Apollo Client)import { gql, useQuery } from '@apollo/client';const GET_USERS_AND_POSTS = gql...查询根和突变根接下来,定义GraphQL的查询根(Query)和突变根(Mutation)类型,它们是客户端请求数据和修改数据的入口点。type Query { user(id: ID!)...客户端控制:客户端可以决定获取多少数据,何时获取,提高了用户体验。缓存优化:客户端可以根据返回的数据结构更容易地进行缓存策略的实施。

6210

塔荐 | 2018 年最值得关注的 JavaScript 趋势

尽管Facebook从未在这场游戏中领先过,并且在创新的势头上无法与Vue匹敌,但在工具使用、代码切割、路由以及状态管理方面, React加上Next.js能让你在体验上跟Vue接近许多 ,此外还能让你获得大规模的...2017年,他们还推出了 reason-react ,将reason跟Reacy绑定在一起,这样你就可以写出可编译成惯用ReactJS的 Reason代码。...我们现在有了 Relay Modern (Facebook开发)和Apollo,让你可以比Redux更高效地抓取并传递GraphQL数据到React应用的GraphQL客户端框架。...这意味着你仍然可以跟Relay一起用Redux,Redux用于本地状态管理以及一些复杂的非服务器状态,然后由Relay来抓取。...Parcel的卖点是别的打包工具都变得太庞大了,而Parcel的打包速度是Webpack的2倍(使用缓存的时候快10倍)。

1.5K80

REST API和GraphQL API的比较

该数据可用于GET、PUT、POST和DELETE数据类型,指的是对资源的读取、更新、创建和删除操作。...RESTful API 使用 HTTP 方法在处理数据时执行 CRUD(创建、读取、更新和删除)过程。 为了促进缓存、AB 测试、身份验证和其他过程,标头向客户端和服务器提供信息。...缓存 REST API 的所有 GET 端点都可以缓存在服务器上或通过 CDN。它们也可以由客户端存储以供经常使用,并由浏览器缓存。...GraphQL 通过单个端点提供,通常是 (/graphql),并且与 HTTP 规范不同。因此,无法像 REST API 那样缓存查询。 但是,由于可用的工具,客户端缓存优于 REST。...一些使用缓存层的客户端Apollo Client,URQL)使用 GraphQL 的模式和类型系统,允许它们在客户端保留缓存

40310

GraphQL 查询你的 Django 应用

TLDR vs 扩展的 REST 协议 什么是 GraphQL 客户端?...什么是 GraphQL 客户端? 我们主要聚焦于 GraphQL 服务端提供,但是也需要先看一下所谓的客户端究竟做了什么。...相较于原生的 GraphQL客户端主要解决了几件事情: 客户端数据拉取缓存问题(包括缓存一致性、更新缓存等) 数据分页、声明式数据获取 ......主流的客户端框架主要有两种—— Relay 和 Apollo ,我们仅从有限的角度来看下二者的异同: Relay vs Apollo Relay Apollo 框架支持 仅支持 React, React...总结 GraphQL 在前端需求迭代频繁的场景下,比 REST 更符合现代开发节奏 GraphQL 的语言设计比自定义扩展的 REST 更自然,更具备通用性 GraphQL 会将比较多的工作放到客户端

2K60

大势 | 2018最值得关注的JavaScript趋势

尽管Facebook从未在这场游戏中领先过,并且在创新的势头上无法与Vue匹敌,但在工具使用、代码切割、路由以及状态管理方面,React加上Next.js能让你在体验上跟Vue接近许多,此外还能让你获得大规模的...2017年,他们还推出了reason-react,将reason跟Reacy绑定在一起,这样你就可以写出可编译成惯用ReactJS的 Reason代码。...我们现在有了Relay Modern (Facebook开发)和Apollo,让你可以比Redux更高效地抓取并传递GraphQL数据到React应用的GraphQL客户端框架。...这意味着你仍然可以跟Relay一起用Redux,Redux用于本地状态管理以及一些复杂的非服务器状态,然后由Relay来抓取。...Parcel的卖点是别的打包工具都变得太庞大了,而Parcel的打包速度是Webpack的2倍(使用缓存的时候快10倍)。

79020

GraphQL是API的未来,但它并非银弹

例如,如果你使用像 Next.JS 这样的框架,结合 swr hooks(stale while revalidate),你就可以直接使用 Etags 自动缓存缓存失效。...此外,你无需使用像 Apollo 这样的重量级客户端。由 Vercel 提供的 swr 库很小,很容易使用。它支持分页、hooks,并能帮我们实现非常有效地来回导航。...我无法认同这个结论,不能仅仅因为 GraphQL 模式不支持本地版本控制就说问题消失了。如果不为 REST API 设置版本,也会取得同样的效果。...同样,使用像 Next.JS 这样的全栈框架更容易实现这一点,缓存也更容易,同时你还免费获得了基于 Etag 的缓存失效。 综上所述,GraphQL 准确提供了你所需的数据。...如果没有 Apollo 提供的所有工具,你认为 GraphQL 会变成现在这样吗?会议呢?GraphQL 峰会?Hasura 在线会议?Dgraph Lab 举办的 GraphQL in Space?

2K10

Graphql实践】使用 Apollo(iOS) 访问 Github 的 Graphql API

如果你也对 Graphql 感兴趣,不妨先从 Github 的 Graphql API 来切手实践。...关于 Graphql 官网 尽管只是做客户端的一些实践,我还是建议你先过一遍 Graphql 官网的学习指南。这样能更快速地理解概念。一些客户端库的文档,大部分都只是介绍基本用法。...如果找不到最新的库,可能需要更新下 pod: pod install --repo-update 写到 Xcode 里那段脚本,是不正确的。...官网文档没有及时更新,应该下面这样写: APOLLO_FRAMEWORK_PATH="$(eval find $FRAMEWORK_SEARCH_PATHS -name "Apollo.framework...-name '*.graphql')" --schema=schema.json --output API.swift 【未验证】如果考虑 Apollo 自定义Header或者自定义 HTTPS 证书校验

1.4K00
领券