关于数据加工,前端后端责任讨论

2019-08-05 17:40:31 +08:00
 zero47

如题,经常遇到一些调用第三方 API 需要对数据处理问题,前后端总是分不清责任。以下是常见的三个问题

  1. 字符串转换的问题,客户端需要显示“商家”,三方 API 返回 business,是否需要后端转换后返回呢?
  2. 三方如 API 返回 A 和 B,客户端需要显示一个 C,C 的值为他们的平均值,是否需要后端计算后返回?
  3. 搜索淘宝优惠券,需要过滤一些数据,假设淘宝会返回过期的优惠券,需要过滤掉,是否需要后端每次对搜索的结果进行过滤呢?

有没有那一个标准文件指定过这些问题呢?

7611 次点击
所在节点    程序员
74 条回复
luoway
2019-08-06 15:05:35 +08:00
跨多端的话,后端做数据加工,改起来方便。
越灵活多变的需求,数据加工环境越需要往后端放。
前端只负责实现不同展示效果,具体展示内容,例如价格格式化都可以交给后端。
no1xsyzy
2019-08-06 15:36:24 +08:00
front-end provides what back-end provides AS-IS
所以叫 “前端” “后端” 而不单是 “网页端” “服务器端”

不这么做的不叫前端叫 “对后端的封装”
no1xsyzy
2019-08-06 15:46:28 +08:00
昨天刚和 @mayswind 说过这个……但日常被锁……
AriaNg 是一个优秀的封装,但绝不是一个合格的前端。
arrow8899
2019-08-06 15:48:48 +08:00
如果用户量小,前后端做都一样。
如果用户量特别大,后端做会消耗服务器资源(字段越多,消耗越大);前端做的话,如果出了相关的 BUG,需要修改 APP 代码,需要审核上架(不考虑热更新),对用户影响会较大;这个就看你们怎么权衡。
我们目前是后端做的,在不同的端( web,APP,h5 )和后端 API 之间加一个适配层,负责每个端的数据格式化。
Airon
2019-08-06 16:08:58 +08:00
前端:后端处理方便,数据统一,改动无痛热更新
后端:前端处理客户端分摊服务器成本,节省服务器资源
sun019
2019-08-06 16:12:55 +08:00
所有第三方接口尽量后端转一次,便于统一维护
yulitian888
2019-08-06 16:24:36 +08:00
来来来,举几个例子:
1、前端需要显示时间,但是要按照客户所在的时区和不同的 Format (“年月日”/“月日年”)呈现时。
2、终端存在多语言客户时。
3、多个终端( Web、APP )取同一个后端资源且输出内容稍有不同时。
4、前端请求数据过大,存在优化空间时。如若干个小的 tree 或 list 返回在前端拼装成 list 输出,要比后端直接提供 list 传输量小。
5、后端 API 不是自己的项目所提供的。

以上情况,谁会选择让后端处理,那才是见了鬼,尤其是情况 5。

但是另一些情况则刚好相反,比如楼主说的查询优惠券,交给前端处理才是脑子进水了。
所以这个问题根本没有标准答案,一切都要依据实际情况具体分析决定。而且摆在面前的选项绝对不是非此即彼的,某些时候是需要前后端各做一部分数据操作,两端同时处理的。
lbunderway
2019-08-06 16:35:14 +08:00
当前后端都可以处理时,可以适当分一部分给前端处理,现在前端设备都是性能过剩了,而服务器资源较贵
charlie21
2019-08-06 16:40:46 +08:00
一个 utils 文件里的一个函数的事,分什么前端后端 ...
zhang77555
2019-08-06 17:02:40 +08:00
当然是数据中台处理啦
后端只应该关注架构扩展和性能,提供最基础的数据服务
然后由前端写 node 中间层自己爱咋玩咋玩
daveze
2019-08-07 09:51:32 +08:00
你们想要个 BFF,专门做这些事
daveze
2019-08-07 09:52:50 +08:00
@daveze 纠正:你们需要个 BFF,专门做这些事
ugu
2019-08-07 13:10:14 +08:00
前端不算程序员,所以后端做
wfd0807
2019-08-07 18:55:08 +08:00
这种问题从前端段分离普及以后,就没有停止过争吵
在“高素质的程序员应该用最少的成本完成需求覆盖”这个基本原则下
楼主列三种情况就很好区分由谁来做了

场景 1 应该前端 /客户端来做
场景 2/3 应该由服务端做

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

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

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

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

© 2021 V2EX