后端给前端应该提供什么样的数据?

2019-09-09 18:56:58 +08:00
 tourist2018

这几天和前端同事对接,遇到一些分歧。 前端同学认为我应该把页面每项数据都用 API 直接返回,前端拿到的就是直接可用的。 我认为我提供一些基础数据就可以了,除非特别复杂的逻辑,前端可以通过一些简单的计算得到自己的要求(计算量并不大,我看了下就是简单的求和之类的)。

因为前端的需求比较复杂多变,我在了解需求的情况下,提供现阶段基础数据就可以,具体怎么计算由前端负责。大家觉得呢?(惭愧之前虽然是后端,但一直做 infra 的工作,没有怎么做过 API 方面的对接)

备注: 一个页面如果按前端的说法 可能后端会有 n 多个 API 接口 目前暂时使用前端做法

10128 次点击
所在节点    程序员
79 条回复
waising
2019-09-09 19:46:57 +08:00
@nyaapass #19 是他。。是他 。。。还是他。。api
LiuJiang
2019-09-09 19:48:20 +08:00
前端只做展示,后端负责具体数据计算。主要是前端自己说了不算啊!!!
Baymaxbowen
2019-09-09 19:51:15 +08:00
如果你后台的东西变了你改一遍后前端又得改一遍
Fishdrowned
2019-09-09 19:54:37 +08:00
涉及到业务的数据计算还是在后端做比较好,这不是因为计算量,而是因为不应该把这些基础数据直接暴露出去。

如果是简单的把 0.9 展示为 90% 的这些倒是可以放在前端处理。
learnshare
2019-09-09 19:59:26 +08:00
大部分都需要“直接返回”,简单的计算也可以前端做,但通常不给前端这种机会
luoway
2019-09-09 20:06:37 +08:00
月经帖

前端最好只展示,原因上面讨论有提到
- 多端展示时,改动逻辑只需要改后端
- 业务逻辑变动,不影响展示,只需要改后端
- 前端计算精度、兼容性可能存在问题

事实上,如果前端能用 nodejs 包装一下接口,更合适。
codermagefox
2019-09-09 20:06:43 +08:00
我是前端,我的观点是前端不应该处理任何非展示层逻辑.
如果业务逻辑都放在前端,请问要后端干啥?CRUD 我都帮你写了,你就查个表吗?
之前不懂后端,傻了吧唧的都写了,自己学了后端之后发现,原来很多后端不是不会,也不是不知道应该放在后端,就是懒...
xrr2016
2019-09-09 20:09:56 +08:00
API JSON 还不出现?
wanacry
2019-09-09 20:11:44 +08:00
等一个那个男人
fool079
2019-09-09 20:12:36 +08:00
都可以
不过最好中间层(bff)去做 比如上面提到的 graphql
StarkWhite
2019-09-09 20:14:53 +08:00
@nyaapass 我来替那个蓝人说下,用 apijson, 前端不用写,后端不用等 /狗头
uTOmOuk3L6sb4MSI
2019-09-09 20:28:17 +08:00
@672795574 #6
同意,补充个人观点:

api 可能不是一个地方用到,可能 web、各平台小程序、app 都用到,难道都要前端处理一遍...
mamahaha
2019-09-09 20:30:16 +08:00
如果这种事情可以让前端后端商量着来,那这个地方没必要呆了,你在玩命或者在偷懒,老板估计都看不出来。
StarkWhite
2019-09-09 20:42:25 +08:00
@starsriver 如果用的是 REST 等别的方式,那就太理想了,工作量很大,直接 GraphQL 轻松解决
leopku
2019-09-09 20:54:02 +08:00
你们这是典型的架构中少了一层
luozic
2019-09-09 20:55:28 +08:00
网关或者中间层可以玩聚合的
weixiangzhe
2019-09-09 21:04:27 +08:00
加一层 node 层确实不错
chenlaocong
2019-09-09 21:08:03 +08:00
等辣个男人
wu67
2019-09-09 21:12:44 +08:00
我觉得吧, 设计到‘计算’, 那应该是后端做. 涉及到‘转换’, 那应该是前端做. 除非很复杂或者精度要求, 其实都可以前端做
lihongjie0209
2019-09-09 21:13:49 +08:00
别惯着
假如说一个小程序的组件需要数据结构 A, 一个安卓组件需要数据结构 B, 但是里面的数据都是一样的, 你需要写几个接口?

简单一点的, 小程序显示 yyyy-MM-dd, 安卓显示 yyyyMMdd, 你要写几个接口?


至于说小程序或者 APP 需要发版本的问题, 那我后端直接给你返回渲染好的 HTML 如何, 热更新, 不需要发版本。

后端保证数据是对的, 前端出 BUG, 导致显示有问题, 你不想着怎么把前端的 BUG 的修复, 而是想着改后端接口去“兼容”前端的问题, 这叫耦合, 前端和后端的强耦合!!

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/599400

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX