Agentic AI、具身智能、强化学习框架、端侧大模型……来QCon上海站,感受AI的未来! 了解详情
写点什么

Apollo GraphQL Client 4.0 发布,提供更精简的打包功能并强化了 TypeScript 的安全性

作者:Daniel Curtis

  • 2025-10-03
    北京
  • 本文字数:1054 字

    阅读完需:约 3 分钟

大小:524.22K时长:02:58
Apollo GraphQL Client 4.0发布,提供更精简的打包功能并强化了TypeScript的安全性

Apollo GraphQL发布了Apollo Client 4.0,这是一个重大版本更新,带来了更精简的架构、更紧密的 TypeScript 集成、框架无关的 API 和更模块化的特性选择,所有这些功能都是为了减少包的大小并改善开发者的体验。

 

其中一个主要变化是支持按需包含特性。像本地状态管理(@client 指令)和默认的 HTTP 链接这样的特性,除非明确导入,否则不会再打包进来。结合现代化的目标转译(面向 2023 年以后的浏览器和 Node.js 20+)、更好的 ESM 支持和改进的树摇(tree-shaking)优化,许多用户应该能看到来自 Apollo Client 的包的大小减少了20-30%

 

TypeScript方面,4.0 引入了 colocated/namespace 类型(例如useQuery.OptionsuseQuery.Result)、对必需变量更严格的限制、新的dataState属性来区分查询状态(empty、partial、streaming 和 complete)以及模块增强以自定义上下文类型,而不是使用脆弱的泛型。这些变化旨在减少类型错误并提高日常使用中类型的可发现性。

 

此外,错误处理也得到了改进。单一的 ApolloError 已被替换或分解为更具体的错误类,允许更清晰的区分(GraphQL vs 网络 vs 解析),并引入了新的静态.is()类型检查方法以帮助缩小范围。

 

核心库已经与 React 解耦。针对 React 的导出现在位于@apollo/client/react中。这使得在使用 React 钩子与使用非 React 环境中的核心 GraphQL 客户端逻辑时更加清晰,并减少了在非 React 环境使用时的不必要依赖。

 

社区的早期反馈是积极的。一位用户在 X 上分享说:“到目前为止,这对我们团队来说太棒了”,这是他对 GA 版本发布帖子的回应。

 

在 Reddit 上,一位评论者询问从 v3 迁移到 v4 的类型时所推荐的方式,维护者的回应指向了迁移指南,并给出了以下建议:

总的来说,我们不推荐使用生成的钩子,并鼓励使用 TypedDocumentNode 代替,要么通过设置 typed-document-node 代码生成插件,要么通过使用客户端预设,但配置要进行修改。

 

对于考虑迁移的团队,Apollo 提供了详细的迁移指南。关键的破坏性变化包括更新 React 与核心使用的导入、适应新的 dataStateAPI、处理错误类变化,并引入RxJS作为同级依赖。

 

有一个可用的代码修改工具,作者声称只需在项目中运行以下命令,就能在几分钟内完成 90%的迁移:

npx @apollo/client-codemod-migrate-3-to-4 src
复制代码

 

Apollo Client是由 Apollo GraphQL 维护的开源 GraphQL 客户端。它为 JavaScript 和 TypeScript 应用程序提供了管理查询、缓存、变更和订阅的工具,为 React 提供直接的支持,并集成到了范围广泛的框架中。

 

原文链接:

Apollo GraphQL Client 4.0 Released with Leaner Bundles and Strengthened TypeScript Safety

2025-10-03 22:024

评论

发布
暂无评论

EMQ 映云科技 & 阿里云推出“一站式工业数字化解决方案”,共建产业数据湖生态圈

EMQ映云科技

阿里云 开源 物联网 IoT emq

Pulsar—新一代云原生消息平台

中原银行

分布式 pulsar 中原银行 分布式消息

OneBlock | 区块链人才聚集地,面向全球的Substrate 开发者社区

One Block Community

技术社区 #区块链#

招聘 | 多家区块链项目招募开发者!

One Block Community

区块链 招聘 波卡

FinClip 与 uniapp:轻应用平台与前端开发框架

FinClip

解决两大难题,TDengine 助力亿咖通打造自动驾驶技术典范

TDengine

数据库 tdengine 物联网

Redis Stream 专为队列而生,别再用 List 实现队列了

码哥字节

Redis Stream Redis 数据结构 4月月更

MacOS 系统如何把PHP版本升级到 7.4或者更高的版本呢,今天教程来啦

CRMEB

CESS:波卡生态去中心化数据存储的未来

One Block Community

区块链 云存储 去中心化存储 CESS

真的是最全的一致性hash环讲解了

Java工程师

Java 架构 分布式 算法 hash

能让程序员涨薪5K的Hystrix核心工作原理,你真的不打算学吗?

Java工程师

Java 程序员 互联网 微服务 科技

深度学习,如何选择GPU服务器?

Finovy Cloud

人工智能 深度学习 GPU服务器

Java培训-怎样通过 Bucket4j 提供速率限制

@零度

JAVA开发 Bucket4j

3分钟了解Vue开发小程序的技术原理

FinClip

低代码平台常见的安全隐患,J2PaaS低代码平台如何解决?

J2PaaS低代码平台

低代码开发 低代码平台 企业级低代码平台 J2PaaS低代码平台

2022年3月国产数据库大事记-墨天轮

墨天轮

数据库 TiDB 国产数据库 KingBase gbase8a

如何在云端重塑内容生产?来看这场虚拟人主持的发布会

阿里云CloudImagine

阿里云 音视频 视频剪辑 智能生产 视频云

波卡动态 | Moonbeam 上第一个3D NFT项目宣布合作

One Block Community

区块链 以太坊 polkadot 波卡 Moonbeam

一文搞懂Netty发送数据全流程 | 你想知道的细节全在这里

bin的技术小屋

网络编程 Netty Java’ 4月月更 Reactor多线程

运维人必知必会的Zabbix核心命令

博文视点Broadview

基于云服务器ECS搭建网页游戏《浪剑天下》

阿里云弹性计算

玩转ECS 游戏服务器

幸运哈希值竞猜游戏系统开发方案

薇電13242772558

区块链 哈希值

Moonbeam 漏洞赏金计划,最高奖金 100 万美金!

One Block Community

区块链 波卡 Moonbeam

领域驱动设计(DDD)理论与方法

Java工程师

Java 程序员 互联网 DDD 架构设计

写作社区 2 周年,全员狂欢燥起来!

InfoQ写作社区官方

热门活动 InfoQ写作社区2周年

大数据培训-Hive高频面试题分享

@零度

hive 大数据开发

CityClub 北京站马上开始!线下沙龙等你来!

InfoQ写作社区官方

热门活动

恒源云(Gpushare)_新功能上线,你确定不进来看看?

恒源云

GPU服务器 GPU算力

TiDB 6.0 发版:向企业级云数据库迈进

PingCAP

web前端培训-ES6 教程:全面了解 ES6 模块

@零度

前端 ES6

入门Python之后还是搞不定面试、做不来项目,推荐读读这本书

图灵教育

Python 编程 程序员

Apollo GraphQL Client 4.0发布,提供更精简的打包功能并强化了TypeScript的安全性_大前端_InfoQ精选文章