随便扯几个前端糟粕 ✅

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 条回复
bthulu
2022-08-10 12:51:49 +08:00
@Asimov01 那当前稳定后的语言是什么呢
churchill
2022-08-10 12:57:26 +08:00
@uni 见鬼了,原文说的是“there are JavaScript <=> C++ round trips and given the number to round-trips, they slowed everything down.”

到你这就变成了 c++性能低,这种长见识的方式太可怕了
Asimov01
2022-08-10 13:07:55 +08:00
@bthulu 稳定的(不怎么爆发式发展)语言挺多的,比如 C 、Scala 、Perl 、C++、Java 、Ruby 、Objective-C ,选一门生态齐全、久经考验、热度不错的语言就好,比如我选 Java
catinsides
2022-08-10 13:09:53 +08:00
...都没骂对点上...

结果第一条是 不支持多线程,

???,(不是支持多线程的意思,是想说为什么是单线程肯定有什么原因吧
mxT52CRuqR6o5
2022-08-10 13:10:41 +08:00
Javascript 是花 10 天设计出来的,你要是从这个角度去看,一切的糟粕也可以理解了
fulvaz
2022-08-10 13:15:39 +08:00
@youyaang 愿闻其详,哪个? 我去看看
Envov
2022-08-10 13:17:50 +08:00
这种帖子多来点,我爱看
AmiKara
2022-08-10 13:18:20 +08:00
多线程 web 可以参考小程序,开发体验 ——
iapplebear
2022-08-10 13:22:59 +08:00
好家伙,不敢说话了。
cydysm
2022-08-10 13:24:53 +08:00
@Mark24 水印瞩目
nexo
2022-08-10 13:33:10 +08:00
@musi Mac Pro 二三十万 顶配版
phyzoo
2022-08-10 13:35:32 +08:00
自己菜非要怪语言
Thymolblue
2022-08-10 13:36:03 +08:00
确实,哥们一个 Cpp 程序员最近碰了下 JavaScript ,可把我恶心坏了
newmlp
2022-08-10 13:46:08 +08:00
一个脚本语言还想多线程?
bigbigpark
2022-08-10 13:48:34 +08:00
JSON 之父:JavaScript 已非常复杂,我们能做的最好的事情就是让它退役
https://news.cnblogs.com/n/726211/
moell
2022-08-10 13:52:55 +08:00
@DOLLOR jav 还能写业务吗? 手动狗头
npe
2022-08-10 13:54:52 +08:00
JSON 作者都建议废弃掉 Javascript 了
qrobot
2022-08-10 13:54:56 +08:00
@fulvaz 你这明显没黑到点子上

你说的不支持多线程, 在 web 上本来就有 WebWorker 和 webassembly, 基于 eventloop 来说, 对单线程利用率最高,基本上不存在性能问题, 除非是音频和视频解码和编码,或则需要并发计算的,否则基本上在项目中 eventloop 就够用了, 如果真的很大 WebWorker 就能满足了, 至于你说的 IPC 通信需要时间, 我给你科普一下,在大部分场景下,多线程慢单线程, 因为单线程无需上下文切换, 而多线程会切换上下文

多线程下会消耗以下资源


1. 切换页表全局目录
2. 切换内核态堆栈
3. 切换硬件上下文(进程恢复前,必须装入寄存器的数据统称为硬件上下文)
ip(instruction pointer):指向当前执行指令的下一条指令
bp(base pointer): 用于存放执行中的函数对应的栈帧的栈底地址
sp(stack poinger): 用于存放执行中的函数对应的栈帧的栈顶地址
cr3:页目录基址寄存器,保存页目录表的物理地址
......

4. 刷新 TLB
5. 系统调度器的代码执行


其次在异步任务管理上, 是可以看到这些代码执行了多久, 打开 f12 选择 performance 即可. OOM 和 卡死的问题直接就可以 通过 performance 查看就好了


你这个黑点完全没黑到地方。 要是我黑肯定是


1. 大多数浏览器不符合 W3C 的标准, 例如以前 sort 的返回值
2. css 在不同浏览器上差异太过于明显
3. 不支持并发计算
4. 没有内置好的时间处理函数
5. 没有内置常见的例如 sha rsa ecc base64 等常用加密算法, 例如 btoa 就不能加密中文, 目前都还没解决这个问题
6. 没有好的布局方式 grid 和 flex 等等布局都不是很满意,因为嵌套太深,andoird LinearLayout 似乎不错
npe
2022-08-10 13:56:04 +08:00
@phyzoo 哟,小伙子,能否看看你的作品?
andyxic
2022-08-10 14:07:54 +08:00
好家伙...别搞 B/S 架构不就好了。不用浏览器,你就没有痛点,整什么前端后端的,还不是自己菜,没拦着你用别的语言写 GUI 啊,讲白了,想站着把钱挣了。

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

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

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

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

© 2021 V2EX