V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
John60676
V2EX  ›  Vue.js

写了一个 Vue 3 的请求库

  •  4
     
  •   John60676 · 2020-12-28 10:11:28 +08:00 · 5061 次点击
    这是一个创建于 1429 天前的主题,其中的信息可能已经有所发展或是发生改变。
    稍微推广一下自己的开源项目。
    一个能帮你管理请求状态的 Vue 3 请求库: https://github.com/AttoJS/vue-request

    之前无意中看到了 ahooks 里面的一个 useRequest,觉得里面的功能整合得挺不错的。找了一下也没有发现 Vue 3 有类似的库,于是就打算搞一个玩玩,顺便踩踩 Vue 3 的坑。

    目前阶段就差文档还没完善好,只把基础的功能展示出来了,后面有空闲时间(摸鱼)再补充完吧。

    测试啥的都配套好了,感兴趣的同学可以尝试一下。遇到问题的可以提个 Issue 大家讨论一下 :)
    第 1 条附言  ·  2020-12-28 10:56:05 +08:00
    看来标题写错了,我们不是请求库[捂脸],是管理请求状态的库

    例如一些 loading 状态 、错误处理 、请求的节流 /防抖、轮询等。这些东西都内置在里面了
    第 2 条附言  ·  2020-12-28 10:59:05 +08:00
    第 3 条附言  ·  2021-01-25 17:00:32 +08:00
    添加了 gitee 源的文档: https://attojs.gitee.io/vue-request-docs/
    第 4 条附言  ·  2021-03-23 09:25:07 +08:00
    文档已经全部完善了。也添加了两个扩展库:usePagination(分页) 和 useLoadMore(加载更多)

    最新文档地址: https://www.attojs.org
    国内源: https://www.attojs.com
    35 条回复    2021-07-15 22:36:43 +08:00
    xiadd
        1
    xiadd  
       2020-12-28 10:40:50 +08:00   ❤️ 1
    哈哈,支持一下,包名就是从我这转过去的
    John60676
        2
    John60676  
    OP
       2020-12-28 10:44:51 +08:00
    @xiadd 哈哈哈,多谢大佬提供的包名
    tomoya92
        3
    tomoya92  
       2020-12-28 10:49:14 +08:00
    浏览器自带的 fetch 就很香。
    shroxd
        4
    shroxd  
       2020-12-28 10:49:30 +08:00 via iPhone   ❤️ 1
    🐎一下晚上看看
    John60676
        5
    John60676  
    OP
       2020-12-28 10:51:09 +08:00
    @tomoya92 不一样哦,是 Fetch 请求,我们这个库是负责管理请求的状态,例如一些 loading 之类的。我们内置的请求库也是用的 Fetch,真的香
    loading
        6
    loading  
       2020-12-28 10:52:04 +08:00 via Android   ❤️ 3
    vue3 不推荐用 axios 了吗?
    John60676
        7
    John60676  
    OP
       2020-12-28 10:52:40 +08:00
    @John60676 勘误 :“是 Fetch 请求” => “ Fetch 是请求的实现”
    tomoya92
        8
    tomoya92  
       2020-12-28 10:55:59 +08:00   ❤️ 1
    @John60676 #5 哦哦,赞一个。

    不过 fetch 返回的对象我记得是 Promise,Promise 自身也是带状态的呀,也没必要再封装一层去管理吧
    John60676
        9
    John60676  
    OP
       2020-12-28 10:57:42 +08:00
    @tomoya92 具体可以看看文档,其实我们跟请求库没啥直接关系的 [捂脸] ,标题写错了
    John60676
        10
    John60676  
    OP
       2020-12-28 10:58:05 +08:00
    @loading 其实我们跟请求库没啥直接关系的 [捂脸] ,标题写错了
    loading
        11
    loading  
       2020-12-28 11:37:47 +08:00 via Android
    就差文档没写(以后也不会写吧
    John60676
        12
    John60676  
    OP
       2020-12-28 11:42:45 +08:00
    @loading 放心,会的。文档完成了 50% 左右了。指南剩下在线 demo 待补充 和 API 章节而已 (一方面也在等 vuepress-next )。而且目前库只是完成了基本功能,我们还有一些想法没加进去,苦逼打工人,年底太多活干了。争取春节期间完善好
    agdhole
        13
    agdhole  
       2020-12-28 12:18:11 +08:00 via iPhone
    swr 有 vue 版本,就叫 swrv
    John60676
        14
    John60676  
    OP
       2020-12-28 12:21:47 +08:00
    @agdhole 这个我们调研时看过了,我们的方向跟他的不一样 [doge]
    agdhole
        15
    agdhole  
       2020-12-28 12:22:47 +08:00 via iPhone
    @John60676 有什么区别或者特色呢?
    John60676
        16
    John60676  
    OP
       2020-12-28 12:37:09 +08:00
    @agdhole 他们主要还是围绕着数据的状态来做管理的,比如验证数据是否过期决定是否要重新请求。我们关注点是接口的管理,内置了一些日常用得比较多的操作,比如接口的防抖 /节流,loading 状态的管理,还有并行请求等,目的还是减少一些重复的业务代码
    oldshensheep
        17
    oldshensheep  
       2020-12-28 13:46:27 +08:00   ❤️ 1
    看了一下,感觉不错.
    不用自己重新造轮子了,希望文档能够完善.
    John60676
        18
    John60676  
    OP
       2020-12-28 14:03:08 +08:00
    @oldshensheep 提上日程,最近争取搞完整[捂脸]
    dewfall
        19
    dewfall  
       2020-12-28 14:29:55 +08:00   ❤️ 1
    借楼推一个写文档的工具,对展示 demo 这些有封装,楼主可以尝试下
    https://github.com/dewfall123/vitepress-for-component

    然后支持 vue2,可以用大佬的库 vue-demi,简单修改下就支持 vue2,很好用
    https://github.com/antfu/vue-demi
    jones2000
        20
    jones2000  
       2020-12-28 14:57:45 +08:00   ❤️ 1
    批量请求一组 api 数据, 等所有的都到达了再 return 支持吗?
    Chlorite
        21
    Chlorite  
       2020-12-28 15:08:53 +08:00   ❤️ 1
    看着很不错,支持以下
    John60676
        22
    John60676  
    OP
       2020-12-28 15:10:05 +08:00
    @jones2000 什么场景下需要这样用,能说具体一点吗。要不来个 issue 我们讨论一下
    John60676
        23
    John60676  
    OP
       2020-12-28 15:10:43 +08:00
    @dewfall Vue 2 的兼容性支持我们有计划的
    jones2000
        24
    jones2000  
       2020-12-28 15:56:27 +08:00
    @John60676 前端业务需要请求调用多个不同的第 3 方数据,以后进行统计显示出来。 最后的办法是后台来做。但是后台人手不足,另外就时后台调用多了 可能被封 ip, 所以直接让客户端处理。
    John60676
        25
    John60676  
    OP
       2020-12-28 16:08:00 +08:00
    @jones2000 这个貌似是上层的问题了,我们的库支持传入 Promise, 你的多个请求可以用 Promise.all / Promise.allSettled / Promise. race (这三个视需求选择)聚合一下
    wunonglin
        26
    wunonglin  
       2020-12-28 16:12:09 +08:00
    @jones2000 #20 rxjs 的 forkJoin 可以实现
    loveToMy1
        27
    loveToMy1  
       2020-12-28 16:20:01 +08:00   ❤️ 1
    前人栽树,后人吃水不忘挖井人,给力奥楼主
    suzic
        28
    suzic  
       2020-12-28 16:26:11 +08:00 via Android   ❤️ 1
    我之前也根据 flyio 封装了一个,你这个比较通用一点
    tikazyq
        29
    tikazyq  
       2020-12-28 16:32:35 +08:00
    axios 轮子不够用?
    John60676
        30
    John60676  
    OP
       2020-12-28 16:40:39 +08:00
    @tikazyq 跟 axios 可不一样哦,我们这个库是负责管理请求的状态
    kim886
        31
    kim886  
       2020-12-29 15:38:05 +08:00
    支持一下
    anguiao
        32
    anguiao  
       2020-12-31 01:01:51 +08:00 via Android   ❤️ 1
    最近确实在找这样的库,经常写一些重复性的代码来处理请求状态,有这样的库应该会好很多。
    John60676
        33
    John60676  
    OP
       2020-12-31 09:20:16 +08:00
    @anguiao 哈哈哈,这个确实是个痛点。有需要的可以用一下,文档最近在完善了
    TmacV2
        34
    TmacV2  
       2021-03-01 11:21:26 +08:00   ❤️ 1
    支持一下
    anguiao
        35
    anguiao  
       2021-07-15 22:36:43 +08:00   ❤️ 1
    没想到之前回复过这个帖子,这次是真的用上了🤣
    刚上手,目前感觉还不错。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2702 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 15:38 · PVG 23:38 · LAX 07:38 · JFK 10:38
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.