V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
szyp
V2EX  ›  程序员

前端后端的各位,接口请求数据的时候,你们更喜欢哪种方式

  •  1
     
  •   szyp · 7 小时 41 分钟前 · 1018 次点击


    如图所示,如果上面三个 Tab 栏中的数据都不相关

    你是选择:
    1. 一次性加载所有数据,前端点击直接切换
    2. 点击 Tab 栏切换请求对应的数据

    本人是后端,我更期望前端使用第二种方式去请求,这样开发的时候,调试工具更能直观的看到哪个接口出了问题,影响到什么了
    24 条回复    2025-02-24 22:14:01 +08:00
    Rennen
        1
    Rennen  
       7 小时 37 分钟前
    接口肯定是要写三个的,一次全加载还是切换 tab 时加载前端自己决定
    fruitmonster
        2
    fruitmonster  
       7 小时 34 分钟前
    图看不到
    qiaofanxing
        3
    qiaofanxing  
       7 小时 33 分钟前
    @fruitmonster 我这里能看到,画的不错,请问一下用什么工具画的呀
    szyp
        4
    szyp  
    OP
       7 小时 31 分钟前   ❤️ 1
    @qiaofanxing https://excalidraw.com/ v 站很多人讲过
    szyp
        5
    szyp  
    OP
       7 小时 30 分钟前
    @fruitmonster 很简单我描述一下,三个 tab 栏是同时请求数据、还是点击才请求
    qinyui
        6
    qinyui  
       7 小时 25 分钟前
    数据是固定的方式一好点,数据是动态的且希望切 tab 刷新数据就方式二
    gg85
        7
    gg85  
       7 小时 21 分钟前
    看需求,切换频率不高的话分三次,前端加个骨架屏切换时显示
    learnshare
        8
    learnshare  
       7 小时 19 分钟前   ❤️ 1
    显示哪个请求哪个,但原因并不是后端希望这样做。
    前端这样做,更符合按需渲染、按需加载。

    如果涉及到缓存/重复请求,或者 OP 要求方便调试,应该从其他方向解决问题。
    NathanInMac
        9
    NathanInMac  
       7 小时 14 分钟前
    好多国产 app 就是全部加载,妈的流量刺客
    XTTX
        10
    XTTX  
       7 小时 3 分钟前
    也得看看 A\B\C 的数据结构是不是一样的。 不一样的话,全部加载还要做额外 type 判断。

    React 的话全部 api 封装成 useDataA, useDataB, useDataC, 用起来也方便。
    7gugu
        11
    7gugu  
       6 小时 58 分钟前
    看场景呗,数据量少的话,聚合在一块加载还是可以接受的,web 只需要请求一次,速度也很快。数据量大的话,肯定是第二个,首次加载的数据量易于控制,而且后期想要做成三个同时加载也不过是在代码里并行请求两次接口而已。
    Rache1
        12
    Rache1  
       6 小时 55 分钟前
    @NathanInMac #9 用户体验起来快啊,至于用户有没有体验就又是另一回事儿了,哈哈
    IvanLi127
        13
    IvanLi127  
       6 小时 52 分钟前
    后端性能没瓶颈的话,分开对大家都好。有 http2 在,也不怕浏览器堵请求。前端还能做加载优先级控制,后端也能少写点聚合接口。
    xuld
        14
    xuld  
       6 小时 26 分钟前
    不用看评论也知道。
    后端:接口要分的越细越好,前端你来组装。
    前端:接口要越少越好,只要前端要展示的你都要一次性下发。
    阿里:前端同学、后端同学,你们表吵了,这事让中台同学来。
    sakura1988
        15
    sakura1988  
       6 小时 19 分钟前 via Android
    就一个问题,切换 tab 刷不刷新?不刷新怎么保证实时性,刷新又何必
    sakura1988
        16
    sakura1988  
       6 小时 16 分钟前
    @sakura1988 刷新又何必开始的时候就请求全部数据。
    chloerei
        17
    chloerei  
       6 小时 10 分钟前 via iPhone
    后端写三个接口,前端自己维护个 BFF ( backend-for- frontend )做接口聚合。

    我不是说这是最好的,而是前后端分离之后必要的,我支持全栈。
    newbie111
        18
    newbie111  
       6 小时 5 分钟前
    从用户体验来说选 1 ,就算选 2 也是前端说了算,前端可能同时请求了这 3 个接口
    yhxx
        19
    yhxx  
       5 小时 34 分钟前
    我是后端的话,提供 3 个接口,前端爱怎么写怎么写
    我是架构师的话,让前端每次点击一个 tab 的时候再请求新的
    缓存、预请求之类的更深入的这里先不讨论
    redbeanzzZ
        20
    redbeanzzZ  
       5 小时 10 分钟前
    点了再切换,不然压测时候测试搞一堆数据可能影响性能给你来个 bug
    zhengfan2016
        21
    zhengfan2016  
       4 小时 49 分钟前
    那肯定是点哪个请求哪个呀,我理解 op 为什么想要第二种,减少并发是吧哈哈哈。

    你要是想让前端按第二种改,可以使劲抓它小辫子,比如你当前在 tab1 ,但是 tab2 页后端更新数据了,切换 tab2 数据没有及时刷新,你就怼前端 tmd 怎么写出 bug 了。前端如果把切换 tab 就请求对应接口写上了,你就怼前端初始进入页面的时候请求三个接口,切换 tab 又请求接口,重复请求,又有 bug ,你们前端 xxxxx 吃的 hhh
    chihiro2014
        22
    chihiro2014  
       4 小时 26 分钟前
    一般不是看生命周期么,tab 加载和切换的时候才会取数据。一次性取三个,除非是静态数据
    blackmatch
        23
    blackmatch  
       4 小时 13 分钟前
    这不仅仅前后端协作的问题,还会涉及到用户体验的问题,如果一下子请求 3 个 tab 的数据,从技术人的角度可能会觉得对用户是友好的,提前准备好数据,能够无缝切换 tab ,但是体验上却未必:
    1. 一次请求多个 tab 页的数据会增加服务压力,可能会影响接口性能,降低整体的用户体验
    2. 提前加载数据,用户切换 tab 的时候不能及时展示最新的数据
    3.没有过度动画会给人一种“假数据/写死的数据”的错觉

    综上,个人更倾向于切换 tab 时实时请求当前页的数据。
    jamesjammy061
        24
    jamesjammy061  
       3 小时 54 分钟前
    graphql 按需取可以么,但是需要不被后端挨骂🤣,还需要老板支持
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1171 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 18:08 · PVG 02:08 · LAX 10:08 · JFK 13:08
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.