有没有大神来科普一下前后端职责 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
orangeface
V2EX    前端开发

有没有大神来科普一下前后端职责

  •  
  •   orangeface 2018-12-23 14:55:32 +08:00 5638 次点击
    这是一个创建于 2489 天前的主题,其中的信息可能已经有所发展或是发生改变。

    今天遇一外包 把我气笑了 跟我一本正经的说 前端只用把页面做好 假数据做好 就好了 其他的调试接口什么的都应该后端来做???? 现在后端都要自己写 js 对接自己的 api 了吗? 是我太年轻了吗???

    38 条回复    2018-12-28 02:10:02 +08:00
    orangeface
        1
    orangeface  
    OP
       2018-12-23 14:56:19 +08:00
    求大神科普一波 我要拿去撕逼!
    Yoock
        2
    Yoock  
       2018-12-23 14:57:45 +08:00
    后端自己把接口测一遍还是需要的吧?
    dongisking
        3
    dongisking  
       2018-12-23 15:01:08 +08:00 via Android
    @Yoock lz 的意思是 js 网络请求的代码也要后端写吧
    Rekkles
        4
    Rekkles  
       2018-12-23 15:01:35 +08:00
    后端写好 mock 数据+注释 提供数据完事
    orangeface
        5
    orangeface  
    OP
       2018-12-23 15:08:02 +08:00
    @dongisking 是这样的 他们一而再再而三的强调前端只用出页面
    orangeface
        6
    orangeface  
    OP
       2018-12-23 15:08:19 +08:00
    @Yoock 我接口都是通过测试的 并且有 swagger 文档
    orangeface
        7
    orangeface  
    OP
       2018-12-23 15:09:02 +08:00
    @Rekkles 是呀 我都造好了数据 他们却跟我说 因为跨域 访问不通 对接接口是你们后端的事儿 我们前端只用做页面
        8
    orangeface  
    OP
       2018-12-23 15:10:01 +08:00
    更牛逼了的来了 不知道在哪拉了一个人 我不会发图 只能复制了:
    调用接口只是 js,一般都是后端写的
    前端是出 CSS 样式的
    orangeface
        9
    orangeface  
    OP
       2018-12-23 15:10:34 +08:00
    @orangeface 问号脸 真的是我菜吗??我应该去恶补 js 吗????
    orangeface
        10
    orangeface  
    OP
       2018-12-23 15:13:52 +08:00
    牛逼外包一本正经的解释:
    可以这么说,如果前端给你调用接口用时可能 3-4 天,中间肯定会出现各种问题,(如果后端接口提供的早,前端可以根据后端接口去写,如果提供的晚,后端自己对接是最合适的,毕竟自己写的接口自己调配是最快的)如果跨域,还需要时间去搭建虚拟服务器之类的,因为服务器并不相同,所以你没办法短时间内快速对接,这也是我之前为什么一直说后端让我们对接是给我们挖坑的原因;如果后端自己对接,后端牛逼的话最快可能一两天就搞定,1 服务器是不用跨域的,2 自己写的代码自己可以去调配,这就是技术,不懂的人可以了解下,并没有胡编乱造瞎忽悠你们,该我们做的我们肯定是尽心尽力的做好,不该我们背的锅我们肯定不会去背
    orangeface
        11
    orangeface  
    OP
       2018-12-23 15:17:21 +08:00
    在更:
    js 就跟 java 后台一样的,是后端的必修课
    naturedy
        12
    naturedy  
       2018-12-23 15:28:16 +08:00 via iPhone
    当然不是。你只要写好接口,测试用例跑一下,尽量保证接口不要出太多错,提供一个 api 文档就完事儿了。现在很多公司会把前端分为写 js 的和切图的,你可能遇到了后者,就是只负责写 css,出页面
    anmie
        13
    anmie  
       2018-12-23 15:30:47 +08:00
    看技术架构啊。前后端不分离的项目不就是这样吗,前端提供页面,后台拿到之后直接模版引擎渲染,哪有什么 js 请求接口的操作。
    要是前后端分离的项目 就是前端来请求数据进行展示了,后台的只提供接口
    按照你的描述,估计他们认为这是一个前后端不分离的项目,所以他们说的没错。
    GuryYu
        14
    GuryYu  
       2018-12-23 15:31:36 +08:00
    前后端不分离的时候一般是前端只写静态页面,然后由后台来对接数据和实现交互。
    前后端分离的时候一般是后台只提供接口和文档,然后由前端来对接数据和实现交互。

    跨域问题一般是由后端处理的,目前前后端分离开发是主流,但要看楼主的技术架构和当时的约定。
    orangeface
        15
    orangeface  
    OP
       2018-12-23 15:34:14 +08:00
    @anmie 但实际上这是一个前后端分离的项目呀
    katsusan
        16
    katsusan  
       2018-12-23 15:34:21 +08:00   1
    对方是外包你是甲方吗,那直接怼他啊,反正甲方是爸爸:doge:,另外对牛弹琴是没用的,用一句通俗的话说他会把你拉到和他同一个智商水平线,然后用他丰富的经验打败你。
    orangeface
        17
    orangeface  
    OP
       2018-12-23 15:35:33 +08:00
    @GuryYu 这个项目就是前后端分离的 对面的人死活就是说
    和后台数据对接的 js 后台写
    js 就跟 java 后台一样的,是后端的必修课
    orangeface
        18
    orangeface  
    OP
       2018-12-23 15:37:48 +08:00
    @katsusan 他们人多啊 我们这边就我一个懂技术 而且我是后端的 对前端也不是特别熟悉
    hlwjia
        19
    hlwjia  
    PRO
       2018-12-23 16:29:24 +08:00
    这些不是事前先沟通的吗?
    0ZXYDDu796nVCFxq
        20
    0ZXYDDu796nVCFxq  
       2018-12-23 16:50:05 +08:00 via Android
    也就 Web 开发喜欢撕这些东西
    ByZHkc3
        21
    ByZHkc3  
       2018-12-23 17:06:19 +08:00 via Android
    这种直接往死里怼,你接口自测完成写好文档就扔给他们自己联调,前端是涉及到流程交互的,要你写 js 你就该让他们滚蛋
    luman
        22
    luman  
    &nbp;  2018-12-23 17:16:41 +08:00
    前期先出接口文档,一切按照文档进行开发。开发时假数据前端自己解决,你指定好跨域省的在这上面扯皮。不行就把这个帖子发给他
    summermao
        23
    summermao  
       2018-12-23 17:20:16 +08:00
    垃圾外包让他滚
    summermao
        24
    summermao  
       2018-12-23 17:21:19 +08:00
    你就问他能不能做
    also24
        25
    also24  
       2018-12-23 17:24:57 +08:00   1
    一开始以为是 “模板” 带来的后遗症,在后端模板嵌前端代码的情况下,确实有可能混淆这部分职责。
    结果仔细看下来发是个前后端分离的项目……


    真的从分工精细化角度来说,前端确实有可能细分为:
    * 专门实现页面,写样式的前端
    * 专门对接接口,写 JS 写页面逻辑的前端

    但无论如何,写 JS 怎么都不应该是后端的 “职责” 的~
    后端对前端页面的触及,最多也就到 “模板” 这个层级了。


    至于对方所使用的理由:
    如果后端自己对接,后端牛逼的话最快可能一两天就搞定,1 服务器是不用跨域的,2 自己写的代码自己可以去调配

    改一下好像也没什么问题嘛:
    如果前端自己写后端,前端牛逼的话最快可能一两天就搞定,1 服务器是不用跨域的,2 自己写的代码自己可以去调配
    V2exUser
        26
    V2exUser  
       2018-12-23 19:58:40 +08:00
    接口联调是双方的工作,后端给文档,主动权在前端手里,如果前端联调有问题并指向接口,告知后端一起处理。
    mcfog
        27
    mcfog  
       2018-12-23 20:06:34 +08:00 via Android
    搞不定外包就去搞定给外包开工资的人
    zxcvsh
        28
    zxcvsh  
       2018-12-23 20:27:52 +08:00 via iPhone
    js 前段写更好吧,很多东西影响布局
    weakish
        29
    weakish  
       2018-12-23 20:53:12 +08:00
    @orangeface 跨域设置好 http header 就可以,实在不行浏器还可以通过装插件或者命令行参数来绕过。API 接口定了,前端按文档开发就是了,如果需要调试,后端你给它实现一个 mock api 就可以。

    「 js 就跟 java 后台一样的,是后端的必修课」如果不能换外包的话,你可能真的需要学下 js,顺便再学下 css,然后全部自己写。(和这样的外包合作很可能反复扯皮,最后浪费的时间可能超过你学习和自己写前端的时间……
    Vegetable
        30
    Vegetable  
       2018-12-23 20:53:19 +08:00 via Android
    谁是甲方啊?这样不能给钱的啊
    weakish
        31
    weakish  
       2018-12-23 21:03:59 +08:00
    「所以你没办法短时间内快速对接,这也是我之前为什么一直说后端让我们对接是给我们挖坑的原因」

    嗯,你也可以说:Node.js 是前端的必修课,接口( API Gateway )应该由前端来写,方便调试,如果需要修改 API,也更方便。然后前端只需事先告诉后端需要实现什么微服务,然后定好微服务的接口(微服务因为功能单一,所以接口变动的可能性相对来说很小,而且调试方便微服务没实现前,前端可以 mock 实现,等微服务实现了再替换)。这样前端和后端的开发基本上可以独立进行,按照各自的节奏同时开发,可以做到超快速对接。所以我觉得 API Gateway 让后端实现是给双方挖坑。
    otakustay
        32
    otakustay  
       2018-12-23 21:32:38 +08:00
    如果只是 mock 测试,而没有写后端接口调用的 JS 代码,这是前端的问题
    但是如果这样,前端怎么会反馈“因为跨域访问不通”呢,难道是完全没有试过的情况下撒谎说的吗
    如果真的是因为跨域访问而导致没有办法对接上,那么实现相关的跨域配置并让前端可以访问,这个算是后端的职责我认为没有问题
    simonguo
        33
    simonguo  
       2018-12-23 21:57:32 +08:00
    前后端分离职责划分非常简单:

    1.后端管理好 API, 做好每一个 API 的单元测试,理论上只需要给前端一份完整的 API 文档就行了。
    2.前端管理所有和 UI 相关的逻辑,包括路由管理,数据对接。


    普通流程:

    1.产品经理分解需要。
    2.设计:
    - 2.1 前端架构设计
    - 2.2 后端架构设计, 以及 API 设计 (设计过程中需要及时讨论,同时与前端,和测试进行 review )
    - 2.3 测试,测试用例设计
    - 2.4 运维,准备服务资源
    3.开发,前端开发,后端开发
    4.提交测试,bug 修复
    5.运维准备上线。



    备注:一般在 API 设计的过程中会使用一些工具,在 API 设计完成以后,对应的 Mock Server 的数据也就生成好了,这样前端和后端能够很好的并行开发。
    tanpengsccd
        34
    tanpengsccd  
       2018-12-23 23:00:46 +08:00 via iPhone
    我认为后端只要给 完整 API 文档就行了了。是 swagger 或类似的就更好了。但是感觉后端会用 swagger 的人好少啊,和没文档的后端对接真蛋疼
    initsa
        35
    initsa  
       2018-12-24 09:13:17 +08:00 via Android
    ……我们数据筛选分页啥的,都是前端来做,后端只给数据,至于跨域,没后端配合估计也不好饶过去,写接口的时候应该规定好
    vazo
        36
    vazo  
       2018-12-24 11:25:16 +08:00
    吵什么吵,谁出钱听谁的
    Junjunya
        37
    Junjunya  
       2018-12-25 14:11:44 +08:00
    3 年前的前端就是只负责 html+css 写好页面,然后剩下的工作都是后端来做了包括 js,偶尔还会改点 css,所以那会前端被谑称为切图仔。后端相当于是半个 “全干”程序员。


    现在的前后端分离之后,常见的是后端提供只接口,保证接口的稳定性,然后前端根据接口自己写页面负责 html+css+js


    至于楼主现在遇到的情况。其实我觉得问题不大,就是个分工的问题。很多外包因为程序简单,自己一个人前后端通吃写起来很快,但是又不想写 html+css 这种“脏活,累活”就只让前端出页面,然后后端来套页面。

    还有很多小城市里的公司还是这种模式
    orangeface
        38
    orangeface  
    OP
       2018-12-28 02:10:02 +08:00
    感谢各位大神 学到老活到老 那天真的是气炸了 对面一直在各种理由甩锅 就是因为时间紧迫来不及对接,最后我找我朋友熬到 2 点对接完了 我是很愿意学习新东西的 我只是气这些外包为了甩锅不择手段 最后还喷我说我一晚上多出来 20 多个接口全部是假的 不可能写的出来 还要让我给他们看代码。当时真的气笑了 不过真的是吃一堑长一智 立贴长记性
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2388 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 73ms UTC 15:44 PVG 23:44 LAX 08:44 JFK 11:44
    Do have faith in what you're doing.
    ubao msn 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