自动生成一边查询一边使用接口在编辑器中快速找到API,甚至在js项目中,也可以使用alova的扩展自动生成的API代码来享受完整的类型提示
请求策略复杂的请求现场杀手锏一行代码实现各种复杂场景中的请求
自动管理分页数据,数据预加载,减少不必要的数据刷新,流畅度提高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 jungDeveloper
alovajs很不错。我打算将我们的产品统一换成alovajs
Alova 团队认识核心成员