更先进的openAPI方案消除中间的API文档alova的devtools能够同时生成API调用代码,以及每个API的TypeScript类型和详尽的文档。即使在JavaScript项目中,也能享受到完整的TypeScript类型提示。此外,你还可以快速查找所需API,参照参数表快速传参,所有操作均在编辑器内完成。
请求策略复杂请求场景的杀手锏使用alova的客户端和服务器的请求策略应对不同场景下的请求,它们对每一个请求场景都提供了完整的状态化参数、事件和操作函数,只需一行代码实现各种复杂场景的请求。
自动管理分页数据,数据预加载,减少不必要的数据刷新,流畅度提高300%,编码难度降低50%
usePagination((page, size) => totoList(page, size), {initialData: {total: 0,data: []},initialPage: 1,initialPageSize: 10})
状态变化立即发送请求,这在tabs切换和条件查询中很有用。
useWatcher(() => filterTodoList(page, keyword),[keyword, page],{debounce: [500, 0]})
在重要的请求上使用它,可以提高请求的稳定 性
const res = await retry(alova.Post('/api/order'), {retry: 3,backoff: {delay: 1000,multiplier: 2}})
将请求率限制在一定时间内
const limit = createRateLimiter({points: 4,duration: 60 * 1000})const orderRes = await limit(alova.Get('/api/order'))
预加载数据以更快地显示视图,或跨组件重新拉取数据
const { fetching, error, fetch } = useFetcher()fetch(getTodoDetail)
支持无感刷新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()})
灵活性与任何请求工具在任何JS环境下运行Use hooks起源于functional组件,但alova创新性地使其与options和class风格的UI框架兼容,这意味着alova的客户端请求策略几乎不受JS环境和UI框架的限制,可以与您熟悉的请求工具一起使用
加入社区深受全球开发者的信赖依赖alova的开源项目
Scott Hualova创建者
像fetch和axios这样的请求库使请求变得非常简单,react-query和swr又进一步减少了请求的模板代码。但alova的目标是提供极致的API消费效率,消除几乎所有的请求工作,实现更高效的客户端-服务器数据交互
ProddyThe author of EMS-ESP
I'm loving this library and slowly migrating my code from Axios to Alova.
0x1EC10DDeveloper
alova是真的很细致,我看文档的时候每一个点都是痛点,解决了超多问题
Ah jungAuthor of Naive Admin
alovajs很不错。我打算将我们的产品统一换成alovajs
Alova 团队认识核心成员