axios替代品?axios,ofetch,ky,alova如何选择?

Daotin 于 2024-11-05 发布 编辑

背景

一直使用 axios,今天看到还有很多其它的选择,所以来了解一下。

分析(star 截止 2024-11-05)

axios(106k🌟)

axios 是一个基于 Promise 的 HTTP 客户端,适用于浏览器和 Node.js 环境。

功能完整度:axios 提供了丰富的功能,包括请求和响应拦截器、请求取消、自动转换 JSON 数据、超时设置等,方便开发者进行封装和扩展。 知乎专栏

包体积:axios 的包体积相对较大,可能会影响前端性能,特别是在对包体积敏感的项目中。

ofetch(4.1k🌟)

ofetch 是一个基于 Fetch API 的轻量级 HTTP 客户端,适用于浏览器、Node.js 和 Worker 环境。

功能完整度:ofetch 提供了简化的 API,支持请求拦截器、响应拦截器、超时设置等功能,易于封装和使用。

包体积:ofetch 的包体积较小,适合对包体积有严格要求的项目。

ky(13.8k🌟)

ky 是一个基于 Fetch API 的小巧且优雅的 HTTP 客户端,专注于现代浏览器环境。

功能完整度:ky 提供了简洁的 API,支持请求和响应拦截器、超时设置、重试机制等功能,便于封装和扩展。

包体积:ky 的包体积非常小,适合需要精简包体积的项目。

alova(2.9k🌟)

alova 是一个新兴的请求工具,旨在简化 API 集成工作流,提供高性能的客户端和服务端请求策略。参考:https://www.v2ex.com/t/948621

功能完整度:alova 提供了类似 axios 的 API 设计,支持请求拦截器、响应拦截器、超时设置等功能。此外,alova 还提供了多级缓存模式、请求共享机制和数据预拉取等高级特性,提升应用性能和开发效率。

包体积:alova 的包体积适中,功能丰富且灵活,适合需要高性能和复杂请求策略的项目。

综合对比表(包体积截止 2024-11-05)

特性 axios ofetch ky alova
请求拦截器
响应拦截器
超时设置
自动 JSON 转换
请求取消
重试机制
多级缓存
请求共享
数据预拉取
包体积(小到大) 大(2.5MB) 小(912KB) 最小(157KB) 中等(1.1M)

结论

(推荐一些工具)