alova?这到底是什么?你没听说过这很正常。是一个RSM实现库,用于解决MVVM项目下不同请求场景下的问题,也可以帮助你管理服务器状态。它就像一座axios军械库,为axios插上了翅膀。想了解更多RSM可以参考RSM:超实用的多场景请求管理解决方案这篇文章作为vue+alova的基础介绍。可以学习到:alova如何处理频繁请求,跨模块更新服务器状态,模糊搜索alovavue项目下如何帮助管理服务器状态alova流畅使用方法在接下来的入门指南中,我们将把todo以items(todo)为例,重点介绍获取不同日期的todo列表和查看todo详情,讲解创建、编辑、删除items的需求!Alova安装:npminstallalova--save-dev初始化一个alova实例一个alova实例是使用的开始,所有的请求都需要从它开始。它的写法和axios类似,下面是最简单的创建alova实例的方法。import{createAlova}from'alova';importGlobalFetchfrom'alova/GlobalFetch';importVueHookfrom'alova/vue';constalovaInstance=createAlova({//假设我们需要和这个域名的服务器进行交互baseURL:'https://api.todo.com',//在vue项目下引入VueHook,它可以帮助我们使用vue的ref函数创建请求相关的状态,这些状态可以由alova管理statesHook:VueHook,//requestadapter,这里我们使用fetch请求适配器requestAdapter:GlobalFetch(),//设置一个全局的请求拦截器,类似于axiosbeforeRequest(config){//假设我们需要在请求头中添加tokenconfig.headers.token='token';},//响应拦截器,也类似于axiosasyncresponded(response,config)=>{constjson=awaitresponse.json();if(json.code!==200){//这里抛出错误时,它会进入请求失败拦截器中thrownewError(json.message);}returnjson.data;},});todolist——直接使用alova管理的state进行界面渲染。我们在此演示中的界面如下所示。我们使用useRequest发送请求,这是页面获取初始化数据最常用的方法。consttodoListGetter=alovaInstance.Get('/todo/list');const{//loading是加载状态值,加载时为true,结束后自动更新为false//是一个Ref类型的值,可以通过loading.value访问,也可以直接绑定到接口上loading,//响应数据data:todoList,//请求错误对象,请求错误时有值,否则为未定义错误,//成功回调绑定onSuccess,//失败回调绑定onError,//完成回调bindingonComplete,//直接传入Method对象发送请求}=useRequest(todoListGetter,{//初始数据initialData:[],});//######回调设置onSuccess(todoListRaw=>{console.log('请求成功,响应数据为:',todoListRaw);});onError(error=>{console.log('请求失败,错误信息为:',error);});onComplete(()=>{console.log('请求完成,无论成功失败都会调用');});接下来,我们将todoList渲染到渲染界面,完成!
