应用办公生活信息教育商业
投稿投诉
商业财经
汽车智能
教育国际
房产环球
信息数码
热点科技
生活手机
晨报新闻
办公软件
科学动态
应用生物
体育时事

axios替代方案的思考和实践

  本文转发自https:juejin。cnpost7213923957824979000
  axios是一个基于Promise的HTTP客户端,每周的npm下载量4000W,如果回到在10年前,promise式的请求工具是一个很大的创新,它解决了请求繁琐的问题,在那个性能要求不那么高的年代可谓是一骑绝尘。但随着时间的推移,Axios在开发效率和性能方面开始有所落后,现在都已经是2023年了,面对日益复杂的需求,我们需要的是一款更具创新性和领先性的请求工具,而promise式的请求工具只能被称为传统了,如果你想保持在快速发展的前沿,那么请继续阅读。
  首先我想声明的是,我确实不是标题党,接下来我将通过暴露随着时间的推移,axios在一些方面表现的力不从心,并推荐一个新的,相比axios更具现代化和创新性的请求工具给你,它就是轻量级的请求策略库alova接下来我们看看Promise式请求工具的弱点(axios)1。与React、Vue等框架割裂
  现在,React、Vue等前端UI框架对于前端来说几乎是不可缺少的,axios无法和这些框架的状态深度绑定,需要开发者自行维护它们,导致开发效率较低。2。在性能方面毫无作为
  2023年了,相比10年前的应用已经复杂了不知几个数量级,在请求方面要求也越来越高,来保证页面性能的要求,axios在这方面毫无作为,例如在频繁地重复请求、同时发起多个相同请求等场景。3。臃肿的体积
  根据bundlephobia显示,axios的体积在压缩状态下有11kb,看下图
  image。png4。响应数据的Ts类型定义混乱
  在使用axios时,你可能经常会这样写:创建一个axios实例constinstaxios。create({baseURL:https:example。com})在响应拦截器中返回datainst。interceptors。response。use(response{if(response。status200){returnresponse。data}thrownewError(response。status)})interfaceResp{id:number}inst。getResp(xxx)。then(result{result的类型总是为axios。AxiosResponseRespdata。data})
  不知道是axios故意为之还是忽略了,以上的发起的GET请求中,响应数据result的类型总是axios。AxiosResponse的,但其实我们在响应拦截器中已经将response。data返回了,这导致响应数据类型混乱而被困扰。在alova中是如何解决的呢?
  alova作为一个更加现代化,更加适应复杂应用的请求方案,也给出了它更加优雅的解决方案。同时为了降低给的学习成本,也保持了和axios相似的api设计,看起来就很熟悉有木有。
  alova读作阿洛娃,虽然和axios一样都是以a开头,以下两个名称需要注意区分哦!与UI框架深度融合,自动管理请求相关数据
  假设我们需要发起一个基本的数据获取请求,以vue为例,直接上对比代码。
  axiostemplateLoading。。。{{error。message}}{{data}}template
  alovatemplateLoading。。。{{error。message}}{{data}}template
  在axios中需要自己创建对应的请求状态并自行维护,而alova却帮你接管了这项工作开箱即用的高性能功能
  传统Promise式的请求工具主要定位于通过Promise的方式简化请求,而提高性能可能是它们最不会考虑的一点,但作为请求策略库的alova中却着重突出这一点,在alova中默认开启了内存缓存和请求共享,这两项可以极大地提高请求性能,提升用户体验的同时还能降低服务端压力,让我们来一一了解下它们吧。
  内存缓存
  内存模式就是在请求响应后将响应数据保存在本地内存中,当下次再发起相同请求时就会使用缓存数据,而不会再次发送请求,试想一下,当你在实现一个列表页,点击列表项可以进入详情页查看数据,你会想到用户可能会频繁在列表中点击查看详情,当详情数据没有变化时,如果每一次进入详情页都要请求一次未免也太浪费了,而且每次还需要用户等待加载。在alova中你可以默认享受到这样的待遇,以下展示下效果
  screenshots。gif
  请求共享
  你可能遇到过这种情况,当一个请求发出但还未响应时,又发起了相同请求,就造成了请求浪费,或者重复提交问题,例如以下三种场景:一个组件在创建时会获取初始化数据,当一个页面同时渲染多个此组件时,将会同时发出多次相同请求;提交按钮未被禁用,用户点击了多次提交按钮;当预加载还未完成时进入了预加载页面,将会发起多次相同请求;
  共享请求就是用来解决这些问题的,它是通过复用请求的方式来实现的,由于这种案例无法直观展示,就不展示了,有兴趣的小伙伴可以自行体验体验。
  除此以外,自称是请求策略库的alova还提供了特定场景下的请求策略,我们将在下文中介绍,有兴趣的小伙伴请继续往下看。轻量级的体积
  压缩状态下的alova只有4kb,只有axios的30,看下面截图
  image。png
  链接在此更加直观的响应数据TS类型
  在axios中,你想要定义响应数据的类型真是会让人感到困惑,如果你是个Typescript的重度用户,alova可以给你提供完整的类型体验,当你在请求处定义响应数据时的类型后,你可以在多处享受到它,会让你感觉很清晰,我们来看看。interfaceResp{id:number}constpageDatacreateAlova({baseURL:http:xxx})。GetResp(index);const{data,data的类型为Resploading,error,onSuccess,send}useRequest(pageData);onSuccess(event{在成功回调中获取响应数据时,event。data的值类型也是Respconsole。log(event。data);});consthandleClickasync(){send函数可以手动再次发送请求,它将可以接收到响应数据,它的值类型还是Respconstdataawaitsend();}
  至此,相比传统的Promise式请求库,你可能已经初步了解了alova的厉害。
  但。。。它的特性还远不止于此!alova的其他特性多UI框架同时支持
  alova同时支持react、vue、svelte,无论你使用哪种UI框架,它都能满足你。与axios相似的api设计,用起来更简单熟悉
  alova的请求信息构造几乎和axios相同,我们来对比一下它们的GET和POST请求。
  GET请求axiosaxios。get(index,{设置请求头headers:{ContentType:applicationjson;charsetUTF8},params参数params:{userId:1}});alovaconsttodoListGetteralovaInstance。Get(index,{设置请求头headers:{ContentType:applicationjson;charsetUTF8},params参数params:{userId:1}});
  POST请求axiosaxios。post(login,{username:xxx,password:ppp},{设置请求头headers:{ContentType:applicationjson;charsetUTF8},params参数params:{userId:1}});alovaconstloginPosteralovaInstance。Post(login,{username:xxx,password:ppp},{设置请求头headers:{ContentType:applicationjson;charsetUTF8},params参数params:{userId:1}});(请求策略)高性能分页请求策略
  自动维护分页相关数据和状态,并提供了常用的分页数据操作能力,据官方介绍,可以让列表页流畅性提高300,编码难度降低50,以下是官方提供的示例,有兴趣的同学可以去看看。(请求策略)无感数据交互
  这个在我看来,这个无感数据交互请求策略可谓是一大创举,我把它理解为更加可靠的乐观更新,官网是这样解释的:
  无感数据交互是指用户在与应用进行交互时,无需等待即可立即展示相关内容,或者提交信息时也无需等待即可展示操作结果,就像和本地数据交互一样,从而大幅提升应用的流畅性,它让用户感知不到数据传输带来的卡顿。可以更高限度地降低网络波动带来的问题,你的应用在高延迟网络甚至是断网状态下依然可用。
  在我的体验过程中,即使在弱网状态下,也可以让我感受到一种毫无延迟带来的顺畅感,你也来感受下吧。
  screenshots。gif
  据我了解,它使用以下技术:持久化的请求队列来保证请求的安全性和串联性;请求重试策略机制,来保证请求的顺利完成;虚拟响应数据(一个创新的概念),来作为未响应时的数据占位,以便在响应后定位它并替换为实际数据。数据预拉取
  通过拉取数据的方式预先加载好数据并缓存在本地,当真正用到这部分数据时就可以命中缓存并直接显示数据,这种方式也极大地提升了用户体验。写在最后
  总之,alova作为一个新生代的请求工具,具有很大的潜力,你也想试用的话,可以点击以下链接去了解。
  更多推荐
  推荐!这款零代码制作神器,轻松帮你灵活专业的H5页面

澳大利亚爆出惊天丑闻!涉及上百吨卖往中国的黄金!耿直哥近日,澳大利亚广播公司爆出惊人猛料,称位于该国西澳大利亚州著名的珀斯铸币厂,竟然涉嫌将上百吨不符合中国上海黄金交易所要求的金条卖到了中国,而且还对中方隐瞒了这一情况……2022最后一波囤货,聊聊为何双十二推荐入手华为WATCHG一个智能手表机芯加上各种潮流风格的表壳,每一种个性张扬都能得以展现,这就是华为最新发布的可换壳智能潮表华为WATCHGTCyber。与传统的智能手表有所不同,华为WATCHGT……韩国电影,你到底在骄傲什么文令狐伯光在某网络平台看到一个韩国大导演尹济均关于韩国电影发展的感慨,2022年去年韩国电影只有8部过损,2023年迄今为止韩国电影全部扑了,他用的词是韩国电影全都扑街、……希望珠江夜游越做越好此前,南都记者帮报道了市民彭先生反映珠江夜游存在停靠时间久、没对每个景点详细解说等问题。广州公交集团客轮有限公司对此回应,会从多方面进行落实改善。随后,广州公交集团客轮有限公司……CBA联赛球二代之阿尔斯兰,我爸是阿的江!在我们的CBA联赛有这样一些球员,因为父辈从事篮球事业的原因,他们比普通人进入篮球职业联赛具有更多的优势,这也慢慢的在CBA联赛形成了多对父子兵,一般来讲这些球二代在赛场大多表……首届大同好礼文化旅游创意设计大赛入围展落幕为期近5个月的第一届大同好礼文化旅游创意设计大赛入围展落幕,展出期间共接待参观者2。69万人次。展出期间,广大市民游客被这些具有创意的作品所吸引,大家纷纷走进展厅欣赏精美……Pyppeteer释放其全部潜力彻底改变您的Web自动化和抓Pyppeteer是一个Python库,用于通过DevTools协议控制Chrome浏览器的无头版本。它提供了一个接口来自动进行网页浏览、测试、抓取和数据提取。在本文中,……国家植物园讲好中国植物故事来源:人民日报国家植物园门区。王昕摄(人民视觉)游客在国家植物园科普馆参观。杜建坡摄(影像中国)珙桐分类地位:蓝果树科,珙桐属鉴别特征:落叶乔木,高15……冰城冰凌花破土而出,早于同期10余天10日,哈尔滨市道里区雨阳公园内的花池中,一簇簇的冰凌花破土而出,娇嫩的花色带来一抹亮色,这也代表着冰城的春花班即将到来。道里区园林局孙成旭表示,在雨阳公园内绽放的冰凌花……舌尖上的恩施(恩施州十大名吃)5恩施州十大名吃最后一期为大家带来的是福宝山莼菜和年肉,作者码字不易,喜欢的话各位还是点点关注。9。福宝山莼菜莼菜又名马蹄菜、湖菜等,是多年生水生宿根草本。性喜温暖,……老美偷鸡不成蚀把米?我国集成电路进口数量下降,国产替代在加速近年来,中国科技事业发展迅猛,我国集成电路产业发展迅速,我国集成电路进口数量也有所下降。这表明我国集成电路产业正在走向自主发展,中国正在走上自主科技创新的道路。对于美国最……腌咸鸭蛋时,不要直接用盐腌,教你一招,30天流油起沙,特别实清明节都还没有到,五月端午还远着了,难道不到五月端午就不能吃咸鸭蛋吗?当然可以,于是我媳妇要求我在家里给她腌制一坛咸鸭蛋。往年你好像不怎么喜欢吃咸鸭蛋,今年这是怎么了?看……
中国仍然持有超过9000亿美债,假如全部抛售,美国能承受得住根据美国财政部之前公布的数据,中国到现在仍然持有超过9000亿的美债。基于布雷顿森林货币体系的双挂钩原则,美元与黄金直接挂钩,成为了世界货币。在此之后的几十年间,凭……詹姆斯和他的两个儿子登上了体育画报的封面Z博士感叹真是有其父必有其子,基因太强大了。在过去的二十年里,勒布朗詹姆斯已经成为体育画报封面上的固定人物,因为他已经出现了几十次。2002年2月,体育出版物第一次……减持,还得看腾讯减持,还得看腾讯!从股权投资管理人的角度,看腾讯分红式减持美团,在壮士断腕似的行动里,饱含着其维护平台经济生态的智慧与努力。文子苏微信公众号玖豫企服11月16……法国队世界杯号码姆巴佩10号本泽马19号吉鲁9号格子7号北京时间11月14日晚,法国队公布了参加卡塔尔世界杯26名球员的球衣号码,头号球星姆巴佩继续身穿10号球衣,本泽马选择了19号,吉鲁继续身披9号,楚阿梅尼8号,卡马文加25号,……成功源于快乐勤奋并非成功的秘诀,快乐才是成功之道。心里学告诉我们,保持快乐的心境,人就更乐于尝试新鲜事物和挑战自我,更容易获得事业成功,建立良好的人际关系,并会保持一个健康的体魄。……3145点是A股这波反弹顶部,11月中长线波段价值投资赚钱翻A股下周进入短期下跌时间,继续价值投资赚钱!11月18日深夜复盘,有重要的复盘消息跟33。7万粉丝分享,铁粉务必认真看,先说结论:1、这波反弹性质属于超跌反弹,并不是反攻……QQ内测新功能,和微信互通了微信近期的每次更新,都能看到QQ的影子。很难不让人怀疑,微信开始向QQ靠拢,网友吐槽,干脆将微信和QQ互通或合并好了。。。。。。合并大概率是没希望的,至于互通嘛,从种种迹……学穿搭看我就够了穿搭速成推荐NICETOMEETYOU这种背心适合任何体型的女性。它的舒适度很高,可以自由调节,不会引起任何不适。穿着也很舒适,对任何体型都非常友好。而且,它是一件很好的内搭穿。你可以搭配……油价调整最新消息今天10月24日,调整后国内9295号汽油价本年第20轮油价调整来了,没有意外,没有惊喜,油价上调了,面临油价的上调,车主们只能在今晚24时之前把油加满。大开大合的油价,是本年的特色,也是今年的不幸,在未来的几个月里,油……参宿四神秘的大昏暗可能是由一个徘徊的黑洞引发的我们四个不同亮度的黄橙色圆圈这些照片是用欧洲南方天文台甚大望远镜上的SPHERE仪器拍摄的,显示了参宿四这颗红超巨星在2019年底和2020年初前所未有的变暗过程中……30句神反转文案,哈哈哈哈哈哈笑到直不起腰反转总是会带给我们意料之外的惊喜,比如一些神反转的文案总是会让我们突然眼前一亮,继而会心一笑。今天,也为大家收集了一些神反转的文案,希望供大家开心一笑。1hr上班拿的不是……高德调用北斗卫星日定位量超2100亿次,导航定位已全面实现北近日,高德地图公布了基于北斗卫星导航系统(以下简称北斗系统)的应用相关数据:截至2022年11月,高德地图调用北斗卫星日定位量已超过2100亿次,且在定位时北斗的调用率已超越了……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网