今天听前端同事说, 现在流行把业务放后端做,前端越简单越好. 大前端是两三年前比较流行?

2020-08-27 18:03:37 +08:00
 chaleaoch
我比较好奇为啥?
js 坑吗?
不是把逻辑放到浏览器加载,这样服务端开销更小吗?
17457 次点击
所在节点    程序员
121 条回复
bojue
2020-08-28 12:20:09 +08:00
@victor 你是个人才
ihuguowei
2020-08-28 12:25:07 +08:00
好多人对自己不了解的领域想当然,前后端都有……
chaleaoch
2020-08-28 12:31:26 +08:00
@KuroNekoFan 楼主不太理解...
请教个具体问题.
```
一个 resource 两个 field : a 和 b
a = ['open','closed', 'error']
b = ['true', 'false']

api 设计成 <resource>/?a=open

现在需求改了
当 a == error
返回
a == error or (a == open & b==false) or (a == closed & b==false)

a == open or a == closed 相应的改成
a == open & b == true
```

像这种情况, 你打算怎么处理
我的建议是 前端请求两次 ajax 就齐活了.
前端说,不, 应该后端改.

这种属于业务逻辑吧?我觉得. 但是这接口有问题啊.
至少也得改成
<resource>/?type=a1
<resource>/?type=a2
<resource>/?type=a3
类似这种

是这个意思不?
KuroNekoFan
2020-08-28 12:47:31 +08:00
@chaleaoch 我觉得你这挺典型的,既然 a 和 b 决定了 resource,那就应该 resource?a=sa&b=sb
把状态组合影射为一种 typecode,是典型搞笑行为
oma1989
2020-08-28 12:59:11 +08:00
然而好多快餐工,连最基本的 JS/CSS 都不懂,只会使用 VUE 或某个框架都号称是前端。。。。。。。
(我们前端之调用 API 展示数据,null 后台处理掉, 日期格式后台处理好了, 展示小数位数后台处理好了)

还是自己全干来的靠谱。。。。
godgc
2020-08-28 14:20:29 +08:00
我倾向于,复杂的计算逻辑放由后端处理,前端主攻用户体验层和简单的数据处理
jake361
2020-08-28 14:24:55 +08:00
举的那个例子,我是嫩是没看懂,可能是我太菜了。
daxin01
2020-08-28 14:28:59 +08:00
@jaylee4869 货物崇拜编程
jake361
2020-08-28 14:29:09 +08:00
@KuroNekoFan 反正我觉得让前端请求两次... 我觉得这句话就暴露了水平
gdtdpt
2020-08-28 14:29:31 +08:00
@chaleaoch 以我的开发习惯理解后端提供的接口是为业务服务的,不是为数据服务的,像你这里说的情况,之前这个业务是调用一个接口,但是现在业务逻辑变了,有两个解决方案
1. 前端改为调两次不同接口,然后拼装业务需要的数据。
2. 后端修改此接口的业务逻辑,增加参数判断逻辑。

如果前端只是改所调用接口的 url,不增加调用次数的情况,我赞成前端改,因为有别的接口满足业务需要。
但是需要前端改成调用多次接口并封装部分业务逻辑,我认为应该后端改,以我的开发习惯我会避免在前端写这种包含部分业务逻辑的代码。

理由是今天这个业务从调用一次改成调用两次,可能过段时间业务需求又变了,就会变成调用三次,或者有其他的前端接口调用由一次也变成调用多次,这样出现什么问题到底是前端的问题还是后端的问题说不清楚,也不好排查,出现问题需要前端后端一起看数据和逻辑,浪费人力和时间。前后端职责模糊,也容易前后端互相推诿。

说得难听点,如果后端只想做数据库中间件,不处理业务,那前端整一套 SSR 框架直连数据库就行了,要后端干什么。
frankkai
2020-08-28 14:29:52 +08:00
如果服务端接口服务于多种客户端:PC 、移动端、Native

最好还是服务端统一做处理更好。一端处理,多端舒适。
hxy91819
2020-08-28 14:29:53 +08:00
主业做后端,也写过一点前端,我倾向于后端把数据整理好了,前端直接拿来显示就行了。后端做数据处理更容易。前端还需要处理样式和业务交互逻辑。但是一些简单的处理,前端可以自己做,比如时间,后端给时间戳就行了,具体什么格式显示,前端自己处理。

另外,对于图片的处理(比如生成、编辑图片)这种只能客户端做,服务端做成本会很高(带宽、CPU 等)。
leonardyang
2020-08-28 14:30:22 +08:00
我只想知道,业务逻辑扔在前端,咋保证不被篡改啊,现在哪怕不是干这行的都会点打开 chrome 调试,按软件安全原则来说用户所有输入都不能信任,信任用户侧的业务代码运行结果就更过分了吧?
hxy91819
2020-08-28 14:31:48 +08:00
另外我建议所有后端都要学点前端,所有前端都要学点后端。免得被对方忽悠,有时候真的就只是同事想偷下懒而已。
wangyzj
2020-08-28 14:32:06 +08:00
前后端怎么分得看具体需求
还有后端的数据复杂程度和分散程度
不能说都给前端
melvin
2020-08-28 14:55:39 +08:00
复杂计算 还是放在后端好,前轻后重
jaylee4869
2020-08-28 15:10:24 +08:00
@daxin01 nb, 绝了,学习了。
guanhui07
2020-08-28 15:31:44 +08:00
觉得看情况把
xzg1993
2020-08-28 15:43:40 +08:00
@H15018327040 +10086 我这一个页面,六个接口请求
H15018327040
2020-08-28 16:12:34 +08:00
@xzg1993 最恶心的情况是有一个列表,每一项都有一个子对象,子对象上只有一个 ID,获取列表后还得循环去通过子对象的 ID 去获取子对象的数据然后组合成一条完成的数据,真 TM 日了。

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

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

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

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

© 2021 V2EX