前后端分开开发, 必须后端先做,做好了在提供给前端吗? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成内容
chaleaoch
V2EX    程序员

前后端分开开发, 必须后端先做,做好了在提供给前端吗?

  •  
  •   chaleaoch 2020-09-03 10:59:42 +08:00 5847 次点击
    这是一个创建于 1867 天前的主题,其中的信息可能已经有所发展或是发生改变。
    其实接口定义好了就可以了啊 前端不是也有 fiddler 之类的工具可以做代理吗?或者 nginx 也可以.

    为什么一定要后端提供数据呢?

    大部分公司都这样吗?
    wzq001
        1
    wzq001  
       2020-09-03 11:03:15 +08:00
    前端不是要搞页面?后端写接口,约定接口顺序,后端提供 api,doc 给前端就可以了
    wellsc
        2
    wellsc  
       2020-09-03 11:03:26 +08:00
    前后端分离不就是为了同步开发吗?前端等后端开发好了再开发,还要个前后端分离,模板引擎不香嘛
    javalaw2010
        3
    javalaw2010  
       2020-09-03 11:05:11 +08:00   2
    接口文档定义好前端完全可以自己 Mock,如果前端说不行那基本上除了水平太差以外就是偷懒不想自己做这部分的工作。不过如果前端水平真的是不行的话也就只有后端抬一手了,我们以前遇到这种情况的做法是接口定义完之后后端这边接口里直接做一份假数据直接输出放到测试环境上,也耽误不了多少时间,真正的业务逻辑再慢慢写
    Hilong
        4
    Hilong  
       2020-09-03 11:05:28 +08:00 via iPhone
    就看 mock 数据是谁给了
    meteor957
        5
    meteor957  
       2020-09-03 11:07:57 +08:00
    文档先给出来就行
    hecatelove
        6
    hecatelove  
       2020-09-03 11:10:04 +08:00
    我之前在小公司前后端都做。。以我个人经验来看。。先做界面会比较好确定需要哪些数据。 前后端是可以同时开发的。。只要约定好格式。。前端可以写默认数据进行开发(不过有些人会懒得写所以等后端先提供)。。之后再连后端校验调试。
    xuwei0056
        7
    xuwei0056  
       2020-09-03 11:11:49 +08:00   4
    后端先给文档,然后各自开发。最后联调 完事
    maichael
        8
    maichael  
       2020-09-03 11:15:03 +08:00
    你就算前期 mock 后期也要联调呀……
    libasten
        9
    libasten  
       2020-09-03 11:15:35 +08:00
    理论上是讨论好 json 内容就好了,这里也很多人说 mock 数据啥的。
    但是实际上说实话,很难完全按照这些标准来干,有时候取决于哪方面的领导强势,有时候也是实际情况无法严格来执行。
    比如数据约定好了,但是研发过程中还是会遇到事先没有遇到的问题,可能要双方调整数据。
    zhuweiyou
        10
    zhuweiyou  
       2020-09-03 11:15:55 +08:00   1
    不用,甚至 mock 都不需要。

    客户端的视图和逻辑,不应该依赖数据源的字段,做一层 transform 比较好。
    等后端有接口了,只要在转换层做一下字段转换、清洗。

    否则耦合在一起,接口一改,前端跟着改很傻逼。
    xrr2016
        11
    xrr2016  
       2020-09-03 11:16:37 +08:00
    把接口数据定义好就行了啊...
    KuroNekoFan
        12
    KuroNekoFan  
       2020-09-03 11:26:06 +08:00   1
    @zhuweiyou 想法很好,但是一旦有这样的实践,遇到不靠谱的后端,会导致你写出无比奇葩,难以理解的转换层
    KuroNekoFan
        13
    KuroNekoFan  
       2020-09-03 11:26:51 +08:00
    这就相当于把业务逻辑从后端丢到前端,把出 bug 的风险从后端丢到前端了
    cmdOptionKana
        14
    cmdOptionKana  
       2020-09-03 11:29:17 +08:00
    不是必须,由 leader 们决定怎样搞。没有 leader 就前后端开会讨论决定。
    myCupOfTea
        15
    myCupOfTea  
       2020-09-03 12:11:09 +08:00
    是的,接口定义好了就可以了,让前端自己 mock 去
    jones2000
        16
    jones2000  
       2020-09-03 12:15:59 +08:00
    @KuroNekoFan
    @zhuweiyou

    转换层一般是后台写的,用 js 写数据类(通过 ajax 获取数据,转成定义好的格式,不涉及到css的后端都可以写), 写好给前端调用就可以。前期前端直接根据接口文档 用假数据开发 UI 就可以。 后面后台好了,直接换成中间层数据类就可以了。
    zstone123
        17
    zstone123  
       2020-09-03 14:46:38 +08:00 via Android
    yapi 谁用谁知道
    KuroNekoFan
        18
    KuroNekoFan  
       2020-09-03 14:48:25 +08:00
    @jones2000 我也比较 prefer 这种模式,但是遇到不靠谱的后端,还是很糟心
    guorui112
        19
    guorui112  
       2020-09-03 15:04:35 +08:00
    没啥用,等后端给最好,有时候前端先写某个地方,数据格式自己定义好后,给到后端,到最后还得按后端的格式改,后端是天
    GopherTT
        20
    GopherTT  
       2020-09-03 15:12:44 +08:00
    先写页面 然后根据文档写业务 最后联调没毛病 很多时候根本都不需要 mock 怕做不完就前端自己 mock
    sayitagain
        21
    sayitagain  
       2020-09-03 15:38:19 +08:00
    先定有哪些接口,然后定每个接口的数据格式,然后各自开发,联调...
    xianxiaobo
        22
    xianxiaobo  
       2020-09-03 15:50:02 +08:00
    不是,可以前后端同时开发,如果公司非常注重效率的话,不过要先约定数据格式和接口文档。
    Hoye
        23
    Hoye  
       2020-09-03 15:56:26 +08:00
    @zhuweiyou
    @KuroNekoFan
    我寻思着你就算写好转换,后端改了字段,前端不也要改吗 手动狗头。。。
    xuanbg
        24
    xuanbg  
       2020-09-03 16:08:50 +08:00
    先定接口,大家按约定各干各的,干完了一起联调一下就完了。如果接口设计合理,正常情况下直接就对接上了,所谓联调就是个说法而已。
    anjianshi
        25
    anjianshi  
       2020-09-03 16:11:51 +08:00
    接口字段约定好然后各做各的啊。前端好一点的会自己 mock 的。
    qiyue0726
        26
    qiyue0726  
       2020-09-03 17:28:18 +08:00
    我们垃圾公司,后端写完接口还要自己去对接,每次都得花大把时间去看前端的代码,恶心的要死,不知道项目经理怎么想的
    IssacTomatoTan
        27
    IssacTomatoTan  
       2020-09-03 18:00:10 +08:00 via Android
    身为前端,我只是写好页面和一些交互,至于接口请求和相关数据处理逻辑会等到联调的时候写上
    lixiangzaizheli
        28
    lixiangzaizheli  
       2020-09-03 18:03:57 +08:00
    backend -> swagger -> mock -> frontend
    securityCoding
        29
    securityCoding  
       2020-09-03 18:41:59 +08:00
    openApi 了解一下
    gdtdpt
        30
    gdtdpt  
       2020-09-03 18:49:24 +08:00
    @chaleaoch
    好像回复过你类似的问题,真的这么大怨气吗?
    旧主题链接 t/701987
    guanhui07
        31
    guanhui07  
       2020-09-03 19:01:12 +08:00
    securityCoding
        32
    securityCoding  
       2020-09-03 19:25:21 +08:00
    @qiyue0726 为什么不先通过 openapi(swagger)的方式约定好接口呢?
    zhw2590582
        33
    zhw2590582  
       2020-09-03 19:45:14 +08:00
    看你们谁写 mock,不过前端只要不是要实现太复杂的功能,基本框架成型后都是复制粘贴而已,所以写起来很快,基本不耽误进度。
    Cola98
        34
    Cola98  
       2020-09-03 20:18:49 +08:00
    先商量好接口,然后出文档,前端调用后端提供的接口,后端实现接口功能就行了,完全分开的。
    chaleaoch
        35
    chaleaoch  
    OP
       2020-09-03 22:53:22 +08:00
    @gdtdpt 是一位同事,但是这是两件事. 而且不是怨气. 就是想看看别的公司别的项目是什么样子的.
    qiyue0726
        36
    qiyue0726  
       2020-09-04 00:39:31 +08:00
    @securityCoding swagger 接口是有的,不知道他是不是脑子抽了,非得后端去对接,搞得贼费劲
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     965 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 22:29 PVG 06:29 LAX 15:29 JFK 18:29
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86