# 与 Axios 对比

URL: https://caijiao.org/ky/axios-comparison
Source: docs/ky/axios-comparison.md
Description: 对比 Ky 与 Axios 的优缺点，帮助选择适合的前端请求库。

[Ky](/ky/) 和 [Axios](/axios/) 都是常用的前端 HTTP 请求库，但它们设计理念和特性有所不同。本章节对两者进行对比分析。

## 1. 库大小

| 库 | 大小 |
|----|------|
| Ky | 约 2 KB (压缩后) |
| Axios | 约 12 KB (压缩后) |

- Ky 更轻量，适合对包体积敏感的项目。  

## 2. 基于原生 API

- **Ky**：基于 Fetch API，现代浏览器原生支持。  
- **Axios**：基于 XMLHttpRequest，兼容性较好，但不使用原生 Fetch。  

## 3. 默认行为

| 特性 | Ky | Axios |
|------|----|-------|
| 自动 JSON 解析 | ✅ | ✅ |
| 自动转换请求头 | ✅ | ✅ |
| 超时处理 | ✅ | ✅ |
| 请求取消 | ✅ (AbortController) | ✅ (CancelToken) |
| 拦截器 | ✅ (hooks) | ✅ |

## 4. 错误处理

- Ky 抛出不同类型错误（HTTPError、TimeoutError、AbortError），便于分类处理。  
- Axios 抛出统一错误对象，需要手动解析状态码。  

## 5. 适用场景

- **Ky**：适合现代浏览器项目，追求轻量、简洁和 Fetch 原生体验。  
- **Axios**：适合需要兼容旧浏览器、依赖丰富功能和插件的项目。  

## 小结

- Ky 更轻量、现代化、与 Fetch 原生一致。  
- Axios 功能丰富、生态成熟、兼容性好。  
- 根据项目需求选择适合的请求库，或者结合团队习惯进行使用。
