V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
orangeface
V2EX  ›  前端开发

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

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

    今天遇一外包 把我气笑了 跟我一本正经的说 前端只用把页面做好 假数据做好 就好了 其他的调试接口什么的都应该后端来做???? 现在后端都要自己写 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 是呀 我都造好了数据 他们却跟我说 因为跨域 访问不通 对接接口是你们后端的事儿 我们前端只用做页面
    orangeface
        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  
       2018-12-23 16:29:24 +08:00
    这些不是事前先沟通的吗?
    gstqc
        20
    gstqc  
       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 你就该让他们滚蛋
    sunjiayao
        22
    sunjiayao  
       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   ·   我们的愿景   ·   实用小工具   ·   5427 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 41ms · UTC 08:18 · PVG 16:18 · LAX 01:18 · JFK 04:18
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.