随便扯几个前端糟粕 ✅

2022-08-10 10:15:49 +08:00
 fulvaz

月经贴看到从 xx 开始学前端觉得不适。

哎,都没骂对点上,让我好着急,我来替你们说。

以下情况的语境都是浏览器上。(在 Node 想做啥就做啥,有什么好骂的

不支持多线程

eventloop 一看到巨型应用立刻躺平摆烂:“老夫不行了,你自己想办法拆任务到其他 frame 执行吧”。

好家伙,这是赤裸裸威胁,要么等久一点(递归 MessageChannel ),要么卡成狗(阻塞主进程),8 核 CPU 硬生生变成单核。

WebWorker ?整挺好,就是 IPC 通信也是要时间的,想想序列化一个对象意味着什么。

SharedArrayBuffer 这个不错,就是要想想怎么操作二进制。

瘸腿的异步任务管理

异步任务,比如 promise ,setTimeout 触发的,不去 monkeypatch 或者改业务代码根本不知道他们要执行多久,什么时候开始执行。

ok ,大型应用一堆业务一起做异步任务,哦吼,卡成狗。

面对一堆无法感知的任务,在风中凌乱。

无法监控的 OOM 和卡死

懂的都懂。

我觉得,如果一个开发愿意舔着脸求客户提供 chrome 日志去查问题,那么雇佣这个开发的企业应该给他发双倍工资。 ( PS:我没求过)

如果那个开发还能分析 chrome 日志并定位问题,那么应该给他发三倍。

多出来的一倍拿去植发。

可能 chrome 老哥觉得重启挺好的。

其他 (给某些老哥的素材)

求求了,什么时候有优先队列?都叫 java ,怎么多了几个字母还变菜了,是不是写前端的数据结构不会用? (狗头保命

PS:别骂 0.1+0.2 = 0.30000000000000004 了, 当年都不知道是谁这么腹黑,放这么直的钩。

就酱,希望大家在前端娱乐圈玩得开心~

11466 次点击
所在节点    程序员
100 条回复
alphardex
2022-08-10 20:58:44 +08:00
前端要那么多干什么?没了这些就写不出漂亮的界面了吗?写不出炫酷的效果了吗?写不出富有交互性的游戏了吗?
jsq2627
2022-08-10 21:42:21 +08:00
多线程共享内存在 go 和 rust 也不被提倡,这应该是业界踩了几十年坑后的共识
虽然有时候共享内存确实很方便,最近我有个业务用 web worker ,要自己花很大精力封装 rpc 和序列化,头大
pigspy
2022-08-10 22:35:47 +08:00
js 有的地方也是挺好的,比如声明一个对象用个大括号就行了
Aloento
2022-08-10 22:39:32 +08:00
SharedArrayBuffer 默认禁用
dcsuibian
2022-08-10 23:25:52 +08:00
多线程、监控 OOM 、优先队列,你是要用浏览器挖矿么?
前端没有这些的最大原因是不需要,不要用后端的思想去想前端。

如果你要拿 js 做计算密集型任务,那就是做不了的。
但一般 web 场景本就不是对性能要求特别高的场景。网页加载完后,大部分时间 js 都是空闲的,而加载时,网络 IO 则更容易成为木桶的短板。甚至很多后端程序的执行时间也是花在了 IO 、数据库查询而不是计算上。

安迪比尔定律:硬件给的,都会被软件消耗掉。如果是几十年前,那 cpu 资源确实是很宝贵的。但现在就不一样了。
js 这样的高级语言之所以能流行,一方面是因为计算机的性能太快了,另一方面是因为他们的应用场景确实也不需要什么性能。
高级语言就是把计算机时间浪费了,把程序员的时间省了。
dcsuibian
2022-08-10 23:36:33 +08:00
另外,多线程会很大程度上提高应用的复杂性。对它的看法也越来越谨慎,原来你有一个问题,引入多线程,你就有两个了。已经不再被视为一个通用好用的解决方案。
js 对异步的支持是非常好的(应该算是被单线程倒逼的)。使用 js ,就不应该用阻塞的写法,延迟执行和网络请求都是异步的。以前还有回调地狱,现在有了 promise 和 async/await 就好很多了。对比 C#
dcsuibian
2022-08-10 23:36:49 +08:00
@dcsuibian 参考 C#
RoshanWu
2022-08-11 00:05:28 +08:00
simply make it popular
akira
2022-08-11 00:54:21 +08:00
你们是把浏览器当成操作系统来用了吧。。
Solael
2022-08-11 08:11:22 +08:00
正是有各种坑各种问题才好不停地造新轮子创造需求,给高级开发的钱就是这么来的。凡人跟着走就行了,只要前端这行还有钱赚就行
laolaowang
2022-08-11 08:34:14 +08:00
这是来了一个八卦论坛么??
hoopan
2022-08-11 08:46:38 +08:00
前端的历史包袱比较重,技术迭代不可能跟后端语言一样快
macha
2022-08-11 09:01:17 +08:00
来桌面客户端试试,国内的环境下,C++用到天荒地老。
用 electron ?客户会说,包太大。
用 C#? 客户会说,我不想要依赖。
好吧,只有 c++能满足你了。

所以国内现在要么
是 QT ,要么是魔改的 Duilib 。
Felldeadbird
2022-08-11 09:22:01 +08:00
楼主吐槽的这几个点我就都没遇到过这种业务环境。可以看出楼主日常用前端很重度了。
Narcissu5
2022-08-11 09:38:34 +08:00
@slipkinem 当年搞 flash 的也差不多这种想法,然后被整锅端了
xingyuc
2022-08-11 09:48:03 +08:00
就这?为什么不提各种小程序
James369
2022-08-11 10:01:28 +08:00
Web 设计之初就这样了,谁知道网线什么时候可以变成总线呢
lanten
2022-08-11 10:15:57 +08:00
吐槽 promise 那一段相当诡异,还 monkeypatch 你还真是着了道了,程序设计成一坨屎应该怪语言吗?
cmdOptionKana
2022-08-11 10:22:41 +08:00
@Solael

> 正是有各种坑各种问题才好不停地造新轮子创造需求,给高级开发的钱就是这么来的。凡人跟着走就行了,只要前端这行还有钱赚就行

说得太对了!如果是自己业余玩,不喜欢 js 完全可以玩桌面软件或手机 App ,如果是工作赚钱,前端问题多反而是大优点,有问题才有需求,赚钱不就是拿钱办事吗。
shunia
2022-08-12 10:38:29 +08:00
千人千面,每种语言应该都有值得被某个个体喷的缺陷。
你不说你遇到的问题,直接说这个东西本身有问题,或多或少也是有点找杠了。

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

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

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

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

© 2021 V2EX