关于前后端分离接口和展示层的一些问题

2019-07-02 11:41:09 +08:00
 lihongjie0209
  1. 排序问题

假如接口返回的数据是 3 1 2, 但是前端需要展示的是 1 2 3, 并且没有分页, 一共就 3 条数据, 那么这个排序是前端做还是后端做.

  1. 数据整理问题

假如接口返回的是一个数组, 但是前端需要一个树, 那么这个数据整理是前端做还是后端做.

我的想法是后端和展示层不依赖, 数据整理和排序都应该是展示层的工作.

实际情况是前端做起来很费力, 只能我专门写一个整理好的接口.

再次说明了: 技术问题最终还是人的问题.

10832 次点击
所在节点    程序员
131 条回复
lihongjie0209
2019-07-02 13:22:58 +08:00
@xuanbg 不带分页的,审题
lihongjie0209
2019-07-02 13:24:43 +08:00
@will0404 前端改 UI 的话, 需要的数据不变, 是不是后端就因为数据格式的问题还要改接口
lihongjie0209
2019-07-02 13:26:07 +08:00
@liuhuansir 不是举手之劳的问题, 后面前端要改 UI, 你还要跟着改接口, 是耦合的问题
zr8657
2019-07-02 13:26:57 +08:00
前端的重点是与用户的交互,这种处理数据结构的问题应该后端做。
lihongjie0209
2019-07-02 13:30:26 +08:00
@zr8657
前端的重点是用后端的数据与用户交互
数据后端给, 交互的前端的事情.
至于前端拿到数据要怎么处理那是业务决定的, 后端不可能也不应该专门为了 UI 的方便而改接口
Chingim
2019-07-02 13:30:53 +08:00
后端做。因为一个接口可能对接 web,安卓,ios 等等各种客户端,客户端做就重复劳动了。而且排序规则改变时,若干个端都需要改。
当然排序这么简单的东西,谁做都一样。但是以后如果需要加分页了,那还是后端做,从扩展性上考虑,后端做比较好
lihongjie0209
2019-07-02 13:38:04 +08:00
@Chingim 没有多端, 所以暂时不考虑
a62527776a
2019-07-02 13:43:24 +08:00
这种应该是需求定的把 怎么能因为前端说组件不支持就要求后端改接口呢
will0404
2019-07-02 13:44:00 +08:00
@lihongjie0209 你的假设就是错的,接口不应该根据 UI 来定。既然你接口要根据 UI 来定,那么 UI 变了接口跟着变不是合理的吗?这个点在于,接口不是跟着前端变,而是接口和前端都跟着 UI 变了。
a62527776a
2019-07-02 13:47:25 +08:00
我感觉的问题是
前端说组件不支持数组 所以要个树
那不是应该前端自己找个支持数组的组件嘛
lihongjie0209
2019-07-02 13:47:47 +08:00
@will0404 我的意思是, UI 需要展示的数据我都发给前端, 至于说前端要展示 列表还是树状结构那是前端决定的. 就像前端展示 "2019 年 1 月 1 日" 或者是 "2019-01-01" 和我后端没关系
OSF2E
2019-07-02 13:48:28 +08:00
理论上说,交给前端来排序没有问题,但前提条件是 —— 由前端来决定什么时间请求数据以及如何请求数据。

“前端做起来很费力”,只能说明交互场景设计、视图状态分析等等工作拆分的还不够细。

换个角度说,不能用后端“少量字段抽象一个模型”的思路来处理前端问题,应当先分析交互流程,将一个完整的功能拆分为一系列静态场景,然后由前端提出后端数据接口的适配需求,也就是说实现一个功能可能需要提供多个接口,而不是后端把数据“一锅甩给前端,让前端自己在里面选有用的”。
lihongjie0209
2019-07-02 13:48:40 +08:00
@a62527776a 嗯, 前端组件需要什么数据结构肯定是前端自己处理, 现在和后端接口耦合了
lihongjie0209
2019-07-02 13:49:42 +08:00
@OSF2E 我说的费力是前端的组件需要一个树, 但是我给的是一个数组
liuhuansir
2019-07-02 13:50:32 +08:00
@lihongjie0209 前端 UI 变,接口跟着变也是常事,再说就这两个例子又不复杂,后台跟着变也无关紧要吧,商量着来就行了
Caballarii
2019-07-02 13:51:45 +08:00
所以现在经常有一层 API 转发,通常是 node,拿着后端大而全的数据,变成更精细的数据接口给前端用,属于前端的活
version
2019-07-02 13:51:59 +08:00
推荐是前端转吧.我看像是后台管理的应用
能减少后端的业务混乱才是好前端
一对多.多对多.树形结构.后台管理本来数据量不大.没必要后端去拼接..
前端都 vue react 有状态机了.很方便拼接的了.

我一般是让前端改..不会写的.我会帮前端写.然后再喷他们菜.一个数据处理都不会的前端都是 lj
所以前后端分离.不是一条心的..最终整个团队都是毒瘤了..接口数据拼接多.接口会忙.再加需求.后端抗不了的了

如果是 app 的那些接口.就统一后端处理数据了...最好前端只做展示.包括日期
zmyongfeng
2019-07-02 13:52:05 +08:00
打得过就让他做。打不过就自己做
lihongjie0209
2019-07-02 13:52:24 +08:00
@liuhuansir UI 变的意思是在所需数据不变的情况下调整 UI, 最简单的例子 前端展示 "2019 年 1 月 1 日" 改为 "2019-01-01", 这种情况下接口是不需要改变的
KingOfUSA
2019-07-02 13:53:30 +08:00
前端做。

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

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

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

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

© 2021 V2EX