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

理性讨论工作里前端和后端到底是怎样配合的

  •  1
     
  •   RexCarryu · 2023-07-13 18:37:11 +08:00 · 2986 次点击
    这是一个创建于 529 天前的主题,其中的信息可能已经有所发展或是发生改变。

    工作里经常遇到明明接口字段可以直接复用,但每次后端都会在接口新增字段并以不方便修改,升级麻烦,数据持久化,代码已经合了等各种借口搪塞过去。 这样的做法导致前端为了一个新增字段多了很多循环和组装数据的代码。想问下这种情况在前端工作中真的很常见吗。 我对前端的认知是请求接口组装数据,循环等类似代码越少越好,能复用就复用这样性能才会更佳。 是不是我太自私了,工作里应该更多配合后端工作啊。恳请大家指点迷津

    第 1 条附言  ·  2023-07-14 10:30:28 +08:00
    感谢各位巨佬回复,让我对前端角色在团队里的职责更加清晰,只有前后端互相理解才能达到最高效
    codehz
        1
    codehz  
       2023-07-13 18:48:54 +08:00
    这就是为啥要有个 graphql
    ufbek
        2
    ufbek  
       2023-07-13 19:56:02 +08:00
    mark 一下.
    感觉上还要以后端为准, 后端肯定也需要考虑前端的字段.
    可能"借口"并不是借口, 就是实际情况...
    estk
        3
    estk  
       2023-07-13 20:30:15 +08:00 via iPhone
    反正老板用了有问题全找前端,他不管什么服务器宕机或者后端突然把 int 改成 string 这种事,反正他看到的就是前端有问题
    jsq2627
        4
    jsq2627  
       2023-07-13 20:59:54 +08:00   ❤️ 1
    很有可能是后端在维护一座💩山,旧的字段能不碰就不碰
    shui14
        5
    shui14  
       2023-07-13 21:01:27 +08:00
    接口字段,字段 code 。万年圣战,这东西只需要在团队里公开讨论一下,约束好就可以了,至于前端还是后端处理这叫事情吗?
    一般而言,
    业务导向的,如内容展示或者常规后台系统,线性业务,后台数据层可以直接筛选,看能不能协调,前端不是 ts 流行定义一下字段结构,遴选一下
    技术导向的,如时序数据医疗影像网络拓扑地理空间分析等等,这个开发本身就是个交叉的活,原始数据更好,甚至最好自己 decode ,同样约定好就行
    StateMa
        6
    StateMa  
       2023-07-13 21:48:18 +08:00
    ’ 我对前端的认知是请求接口组装数据,循环等类似代码越少越好,能复用就复用这样性能才会更佳。‘我也是这样想的。🤣
    Moierby
        7
    Moierby  
       2023-07-13 21:57:07 +08:00   ❤️ 2
    为了不在扯皮中处于下风,我这两年自学后端,甚至有时候指导后端写代码
    xubeiyan
        8
    xubeiyan  
       2023-07-13 22:05:03 +08:00 via Android
    我司的某个后端设计 API 还能 {"flyAreaData1”: “…”,“flyAreaData2”: “…”},不过我已经懒得喷他了
    jones2000
        9
    jones2000  
       2023-07-13 23:20:38 +08:00
    后台给数据,前端拼装,很正常, 一个接口一个数据转换函数。往上垒。维护和改动影响最小。 如果要复用, 那要做完整的测试用例了, 否则改了一个底层一个复用的地方, 没有完整的测试用例跑一遍, 谁知道会在哪里地方就报错了。
    weeei
        10
    weeei  
       2023-07-13 23:39:32 +08:00
    后端肯定是以数据库表结构好维护的原则来开发和设计的。
    前端就是干业务、写面条代码,说不定下个版本这字段有没用了。
    在这种环境下,需要一个中间层干脏活。
    你们公司小、人少,人员流动性又高的话,该下班下班。
    perfectlife
        11
    perfectlife  
       2023-07-14 00:17:08 +08:00
    看人下饭,配合中也讲人情事故吧
    beijinglowb
        12
    beijinglowb  
       2023-07-14 08:26:13 +08:00 via iPhone
    互相理解,后端和 DBA 也是同样的扯皮,有时增减一个字段也不是他能定的。比如我们在日本维护一个 2 千多个表的屎山,一次 sql 查询几十个表,所有字段都要严格按照设计书来做。一般来说前端的职责是尽量去做兼容,js 也是所有语言里兼容面最广的,设计初衷就是如此。
    leroy20317
        13
    leroy20317  
       2023-07-14 09:12:51 +08:00
    我们公司也有 接口 {label1: '', label2: '', label3: ''}表示标签列表 前端拿到还要整合数据
    hooych
        14
    hooych  
       2023-07-14 09:31:12 +08:00
    原有接口更新,新功能用新字段,防止一个字段多个用法造成维护困难;
    新增接口,含义相同用现有接口相同字段,其他的用新字段;
    公共字段定义后不再改变,按需添加新字段。
    HyperionX
        15
    HyperionX  
       2023-07-14 10:04:41 +08:00
    如果这个接口只给你一个页面用,一般都不会这么新增。
    但是后端经常面对一个接口三个端用或者前端 10 个页面都在用,每个端还要分叉逻辑。整一个新版本接口,老接口下线极度困难,常年有老接口明知已经没有端在用了还是持续有流量,怎么下线?额外付出的人力物力远不如加一个字段简单。
    可以多从别人立场思考问题,除了少数个例一般不会胡诌蒙你,都一起合作了基本的信任还是要有多。
    HyperionX
        16
    HyperionX  
       2023-07-14 10:06:32 +08:00   ❤️ 1
    讲道理我工作中遇到的前端基本都是抢着写逻辑,常年说你不好弄我来就行写个循环的事儿。都不知道网上咋能撕起来的,到底是哪些群体在互喷
    MoYi123
        17
    MoYi123  
       2023-07-14 10:12:08 +08:00
    一般要讲性能前, 请先做 benchmark.
    sadfQED2
        18
    sadfQED2  
       2023-07-14 10:13:14 +08:00 via Android   ❤️ 5
    @HyperionX +1

    我是后端。但是我和前端对接一般都是“你看这个好处理不,不好处理我这里帮你处理了”。工作这么多年都是大家商量着来,谁简单就放谁那里处理。哪来那么多撕逼互喷啊
    xuhai951753
        19
    xuhai951753  
       2023-07-14 10:19:13 +08:00
    看谁背锅 如果你不背锅 屎山就屎山了
    保留讨论记录,免得扯皮
    大部分情况下前端还是弱势的,而且性能不会因为几个字段就差了
    Desiree
        20
    Desiree  
       2023-07-14 10:24:03 +08:00
    没文档,最好不要对接接口
    RexCarryu
        21
    RexCarryu  
    OP
       2023-07-14 10:24:13 +08:00
    感谢各位巨佬回复,工作里还是多互相理解吧
    8355
        22
    8355  
       2023-07-14 11:15:22 +08:00
    说实话符合我之前对部分前端的理解,有的前端就是最好只输出啥都不做,改一点都要后端适配。
    有些就是啥都能做,可协商互相不搞屎山。
    有些 app 有历史版本问题,可能大改版之后要 v1/v2 拆分可以理解这个没办法就是不能动。。
    但是 web 就。。。。
    Rache1
        23
    Rache1  
       2023-07-14 11:19:44 +08:00
    有些前端恨不得后端把数据全做了,甚至返回格式都能完美适配他用的那些乱七八糟的组件,拿到后直接 setState 就跑起来🤷‍♂️,连个数据转换都写不好
    xingyuc
        24
    xingyuc  
       2023-07-14 13:36:47 +08:00
    @HyperionX 咳,我一般这么说是觉得麻烦或者对方能力较弱(我也不强
    spicy777
        25
    spicy777  
       2023-07-14 14:03:09 +08:00
    都是商量着来,哪边方便就那边弄
    murmur
        26
    murmur  
       2023-07-14 14:05:52 +08:00
    有啥麻烦的,多定义点 Map<Object, Object>就搞定了
    rm0gang0rf
        27
    rm0gang0rf  
       2023-07-14 14:06:00 +08:00
    说实话昂, 还没有工地盖楼的师傅们默契, 人家不玩花活儿 不任性
    mtjgu
        28
    mtjgu  
       2023-07-14 14:10:39 +08:00
    @Rache1 数据处理和转换的过程抽象为独立的步骤,可以实现数据变更时的灵活性。当数据源发生变化时,只需要专注于更新数据清洗的规则和转换逻辑,而不需要修改前端代码。这样可以提高系统的可维护性和扩展性,并减少前后端耦合度,这样降低开发和维护成本。
    CHTuring
        29
    CHTuring  
       2023-07-14 14:15:19 +08:00
    有没有见过权限字段用 xxx1 xxx2 xxx3 xxx4 来表示的,只能说无奇不有 😊
    Zenon
        30
    Zenon  
       2023-07-14 14:24:53 +08:00
    前端后端都是我,我说了算 🙉
    wednesdayco
        31
    wednesdayco  
       2023-07-14 14:37:17 +08:00
    我见过一个接口返回{"py":xxx,"pingyin":xxx,"pinying":xxx,"pinyin":xxx,"pinying":xxx},这个 xxx 都是一个数据[doge]
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5793 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 06:11 · PVG 14:11 · LAX 22:11 · JFK 01:11
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.