alova
工具JavaScript 请求策略层框架。20+ 开箱即用的请求策略(分页、表单、上传、重试、限流等),减少高达 70% 的请求代码。一套 API 跨 React/Vue/Svelte/Solid/小程序/服务端,支持 Taro 和 uni-app 适配器。
请求策略网络请求Tarouni-appTypeScript跨端ReactVue
详细文档
alova#
平台概述#
alova(发音 /əˈləʊva/)是 JavaScript 请求策略层框架。它不是 axios 或 fetch 的替代品,而是在其之上构建的策略层——封装了分页、表单、上传、重试、限流等 20+ 常见请求场景,提供开箱即用的 Hook,减少高达 70% 的请求样板代码。
核心价值:小程序开发中,网络请求管理(loading 状态、分页、缓存、错误重试)是最常见的重复劳动。alova 通过统一的 Hook API,让开发者在 React、Vue、Taro、uni-app 中用同一套模式管理请求逻辑。
项目数据(2026-08-01 核实):
- GitHub:4009⭐ / 148 forks
- npm:v3.5.3,225 个版本(2022-10 至今)
- 最近活跃:2026-07-25(持续高频迭代)
- 适配器生态:@alova/adapter-uniapp(41 版本)、@alova/adapter-taro(32 版本)
- License:MIT
设计规范#
小程序适配器架构#
alova 通过适配器模式适配不同运行环境:
| 适配器 | 包名 | 说明 | npm 版本 |
|---|---|---|---|
| uni-app | @alova/adapter-uniapp | 适配 uni.request,支持 Vue2/Vue3 | 41 |
| Taro | @alova/adapter-taro | 适配 Taro.request,支持 React/Vue | 32 |
适配器提供三个维度的适配:
- 请求适配器:将 alova 的请求委托给 uni.request / Taro.request
- 响应适配器:统一响应数据格式(status / data / headers)
- 监控适配器:将底层请求错误上报给 alova 的错误处理链
核心 Hook 一览#
| Hook | 用途 | 框架支持 |
|---|---|---|
| useRequest | 基础请求(自动 loading/error) | React/Vue/Svelte/Solid |
| usePagination | 分页列表(预加载 + 缓存同步) | 全框架 |
| useForm | 表单提交(校验 + 自动填充 + 回退) | 全框架 |
| useUploader | 文件上传(进度 + 分片 + 并发) | 全框架 |
| useSSE | Server-Sent Events(流式数据) | 全框架 |
| useWatcher | 数据监听请求(响应式自动触发) | 全框架 |
| useFetcher | 数据拉取(配合缓存更新) | 全框架 |
| useCaptcha | 验证码倒计时 | 全框架 |
| useRetriableRequest | 自动重试请求 | 全框架 |
缓存体系#
- L1 内存缓存:默认 5 分钟,支持手动失效和自动失效
- L2 持久化缓存:小程序中使用 Storage API
- 声明式失效:通过
hitSource关联,某请求完成自动失效依赖缓存
审核规范#
不涉及(请求库,不影响小程序审核流程)。
开发指南#
快速上手(uni-app Vue3)#
// 1. 安装依赖
// pnpm add alova @alova/adapter-uniapp
// 2. 创建 alova 实例
import { createAlova } from 'alova';
import AdapterUniApp from '@alova/adapter-uniapp';
import { VueHook } from '@alova/adapter-ui-vue';
export const alovaInstance = createAlova({
baseURL: 'https://api.example.com',
...AdapterUniApp(),
statesHook: VueHook,
responded: {
onSuccess: async (response) => {
const { statusCode, data } = response;
if (statusCode >= 400) throw new Error(data.message);
return data;
},
onError: (err) => console.error('Request error:', err),
},
});
// 3. 在组件中使用
import { usePagination } from 'alova';
const { loading, data, page, pageSize, total, isLastPage } = usePagination(
(page, pageSize) => alovaInstance.Get('/api/todos', {
params: { page, pageSize }
}),
{
pageSize: 20,
preloadPreviousPage: true,
preloadNextPage: true,
}
);
快速上手(Taro React)#
// pnpm add alova @alova/adapter-taro
import { createAlova } from 'alova';
import AdapterTaro from '@alova/adapter-taro';
import { ReactHook } from '@alova/adapter-ui-react';
export const alovaInstance = createAlova({
baseURL: 'https://api.example.com',
...AdapterTaro(),
statesHook: ReactHook,
});
// 在组件中使用 useForm
import { useForm } from 'alova';
const {
loading: submitting,
form,
send: submitForm,
reset: resetForm,
} = useForm(
formData => alovaInstance.Post('/api/submit', formData),
{
initialForm: { name: '', email: '' },
resetAfterSubmiting: true,
}
);
与 axios 的对比#
| 特性 | axios | alova |
|---|---|---|
| 定位 | HTTP 客户端 | 请求策略层 |
| 状态管理 | 需自行管理 | 内置 loading/error/data |
| 分页策略 | 需手写 | usePagination 开箱即用 |
| 表单策略 | 需手写 | useForm 开箱即用 |
| 缓存 | 需自行实现 | 多级缓存 + 声明式失效 |
| 跨框架 | 无状态,通用 | React/Vue/Svelte/Solid |
| 小程序适配 | 需手动封装 | 官方适配器 |
| TypeScript | 可选 | 端到端类型安全 |
常见陷阱#
- 适配器版本匹配:alova v3.x 需搭配 @alova/adapter-uniapp v2.x+,旧版适配器不兼容
- VueHook / ReactHook 引入:需从
@alova/adapter-ui-vue或@alova/adapter-ui-react单独引入,不在核心包中 - uni-app nvue 页面:nvue 页面不支持 Vue3 Composition API 的全部能力,部分 Hook 可能行为不同
- 小程序并发限制:微信小程序 wx.request 并发上限 10,alova 不会自动排队,需配合
alova/server的限流策略
生态资源#
适配器包#
| 包名 | 说明 | 版本 |
|---|---|---|
| @alova/adapter-uniapp | uni-app 适配器(Vue2/Vue3) | 41 |
| @alova/adapter-taro | Taro 适配器(React/Vue) | 32 |
| @alova/adapter-ui-vue | Vue 状态 Hook | — |
| @alova/adapter-ui-react | React 状态 Hook | — |
| @alova/adapter-fetch | 原生 Fetch 适配器 | — |
| @alova/adapter-xhr | XMLHttpRequest 适配器 | — |
配套工具#
| 工具 | 说明 |
|---|---|
| worma | OpenAPI → 类型安全调用代码 + TS 类型 + API 文档 + AI 知识 |
| alova/server | 服务端请求治理(限流 / 重试 / 分布式) |
社区资源#
- 官方文档:alova.js.org(中/英/日三语)
- Discord 社区:alova Discord
- 微信交流群:见官网二维码
- 视频教程:5 分钟入门
- 交互式 Demo:alova.js.org/examples
版本更新#
当前状态(2026-08-01 核实)#
- GitHub:4009⭐ / 148 forks
- npm:v3.5.3,225 个版本
- 最近推送:2026-07-25
- 创建日期:2022-10-27
迭代频率#
- 225 个 npm 版本(2022-10 至今),平均每周 1-2 个版本
- v3.x 为当前大版本,完全重构了适配器体系
- 持续跟进 React/Vue/Taro/uni-app 生态更新
核实记录#
- 2026-08-01:GitHub API + npm registry 核实,4009⭐ / v3.5.3 / 225 versions / 最后推送 2026-07-25,状态极度活跃。@alova/adapter-uniapp 41 版本、@alova/adapter-taro 32 版本均持续维护。alova 是小程序网络请求管理领域最系统化的解决方案。





