跳到主要内容

极致高效的请求工具集

alova完美兼容你最喜欢的HTTP client和UI框架,快速开发客户端和服务的应用的业务逻辑,同时让API信息与代码进行交互,像虫洞一样拉近后端协作距离,极致高效地集成你的APIs

$npm i alova
Docusaurus themed imageDocusaurus themed image
请求策略业务开发杀手锏alova提供了20+业务模块,我们称之为请求策略,可以帮你快速实现客户端和服务端应用的业务逻辑开发。
分页请求Client

自动管理分页数据,数据预加载,减少不必要的数据刷新,流畅度提高300%,编码难度降低50%

const todoList = (page, size) => alova.Get('/todos', {
params: { page, size }
});
const {
loading, data, page, pageSize, pageCount, total
} = usePagination(todoList);
监听请求Client

状态变化立即发送请求,这在tabs切换和条件查询中很有用。

useWatcher(
() => alova.Get(`/rewards/${activeKey}`),
[activeKey],
{
debounce: [500, 0]
}
)
请求重试Server

在重要的请求上使用它,可以提高请求的稳定性

const res = await retry(alova.Post('/api/order'), {
retry: 3,
backoff: {
delay: 1000,
multiplier: 2
}
})
请求速率限制Server

将请求率限制在一定时间内

const limit = createRateLimiter({
points: 4,
duration: 60 * 1000
})
const orderRes = await limit(
alova.Get('/api/order')
)
预加载数据Client

预加载数据以更快地显示视图,或跨组件重新拉取数据

const { fetching, error, fetch } = useFetcher()
fetch(alova.Get('/todo/1'))
Token身份认证Client

支持无感刷新Token的全局拦截器,并提供基于令牌的登录、注销、令牌分配和令牌刷新的统一管理

const { onAuthRequired, onResponseRefreshToken } = createServerTokenAuthentication({
refreshTokenOnError: {
isExpired: res => res.status === 401,
refrshTokenOnError: async () => {
const { token, refresh_token } = await refreshToken()
localStorage.setItem('token', token)
localStorage.setItem('refresh_token', refresh_token)
}
}
})
const alovaInstance = createAlova({
beforeRequest: onAuthRequired(),
responded: onResponseRefreshToken()
})
表单提交Client

自动管理表单数据,让你快速实现各种表单功能

自动刷新数据Client

通过浏览器事件自动刷新数据,界面始终显示最新数据

学习共20+个请求策略
先进的openAPI方案把API文档搬到编辑器alova的开发工具支持API信息和代码之间的交互式通信,在编码的同时搜索API和查看其完整信息,所有这些都无需离开你的编辑器。
灵活性与任何请求工具在任何JS环境下运行Use hooks起源于functional组件,但alova创新性地使其与options和class风格的UI框架兼容,这意味着alova的客户端请求策略几乎不受JS环境和UI框架的限制,可以与您熟悉的请求工具一起使用
加入社区深受全球开发者的信赖依赖alova的开源项目
avatar
Scott Hualova创建者

像fetch和axios这样的请求库使请求变得非常简单,react-query和swr又进一步减少了请求的模板代码。但alova的目标是提供极致的API消费效率,消除几乎所有的请求工作,实现更高效的客户端-服务器数据交互

avatar
ProddyThe author of EMS-ESP

I'm loving this library and slowly migrating my code from Axios to Alova.

avatar
0x1EC10DDeveloper

alova是真的很细致,我看文档的时候每一个点都是痛点,解决了超多问题

avatar
Ah jungAuthor of Naive Admin

alovajs很不错。我打算将我们的产品统一换成alovajs

Alova 团队认识核心成员
现在尝试 Alova将你的开发效率提升到上一个层次