[交流] 最近在看前端的内容,接触了一些前端的代码,有一些吐槽

2022-08-10 08:39:58 +08:00
 eryajf

最近在看前端的内容,接触了一些前端的代码,从一个小白的角度,仅以过往一些 go 编程经历对比而言,对前端技术栈吐槽如下:

  1. html 标签里边,需要手写的内容太多,自动补全方面比起一些后端语言,差太多。
  2. 外部的包,已经引入成功,也能正常使用,但是这个包的方法并不会自动补全,写起来很难受。
  3. 函数的写法太多了,什么箭头函数之类的,而且感觉写法挺奇怪挺麻烦,老是记不住。
  4. 前端编码不能很方便地看到函数的入参以及返回值,导致用的时候就很模糊,要么死死记住这个方法,要么就得再次看方法的源码。
  5. 前端对方法的调用也是各有便道(混乱),没有参数的函数不加括号也可以以至于后来再看并不好区分这是用了一个方法还会一个参数。在 template 区域,大多方法都是在双引号的包裹当中,以至于补全不力,无法跳转,更无法直接通过调用的地方看到方法的具体实现。

暂时想到这么多,以后可能还补充,欢迎前端朋友一起交流下你的感受。

仅是一些个人角度的主观感受,没有任何恶意,请友善交流!

11972 次点击
所在节点    程序员
105 条回复
Leviathann
2022-08-10 14:04:59 +08:00
go:为什么路上都是逆行的啊
lawler
2022-08-10 14:07:39 +08:00
栓 Q 。
libook
2022-08-10 14:24:57 +08:00
建议不要吐槽自己不了解的东西,等你真正了解了这些东西之后,回过头来看这些吐槽会觉得很羞耻(关键 V2EX 还不能删帖)。

1. 自动补全不属于絕大多数语言的规范范畴,所以这是 IDE 的锅,我用 Jetbrains 家的 IDE 是可以自动补全 HTML 的属性和值的。
2. 有了 Jetbrains 家的代码分析能力,或者使用 JSDoc/ESDoc ,再或者用 TS 都是可以让外部包有完备的文档提示和自动补全的。
3. 蹲一个 C++/Rust 开发者吐槽 Go 语言特性太简陋的回复。
4 、5. 同第 2 条。

你要知道,Go 是一个力求千人一面的语言,靠牺牲灵活性来换取团队高效协作,通常对开发者要求不高,可以让开发者有更多精力放在业务上;而 JS 完全相反,是一门超级灵活的语言,用起来舒不舒服全看个人经验、罗列的三方工具,所以对开发者的要求反而高(即便入门门槛很低)。
richarddingcn
2022-08-10 14:34:29 +08:00
没看过前端 看到楼上的内容实属笑死
c1273082756
2022-08-10 14:36:22 +08:00
TypeScript
Mexion
2022-08-10 14:46:09 +08:00
1. 换个好点的 IDE
2. js 是动态类型语言,用 JSDoc 解决或者直接上 Typescript
3.不要因为 go 太垃圾不支持就这么说,写 go 的说 js 写法奇怪麻烦简直滑天下之大稽
4. js 是动态类型语言,上 typescript
5. 不加参数的函数不加括号也可以是什么意思,传参还要加什么括号,参数就是参数,加括号就是调用了。在 templete 区域,大多数方法在双引号的包裹当中,可以看出写的是 vue ,这是 vue 的问题,要么装个插件(volar),要么换成 jsx 写
wunonglin
2022-08-10 14:48:04 +08:00
看来也只有前端才能有那么多回复量了 [doge]
wupher
2022-08-10 15:16:02 +08:00
挺好的,正不正确无所谓,能勇敢,直接的表达自己的观点,在这个 GreateWall 时代正逐渐变得难能可贵。
bthulu
2022-08-10 15:20:33 +08:00
@lawler [].toString()是空字符串, {}.toString()是[object Object]. []+{}可以理解成都转换 string 相加, 但是{}+[]似乎把这俩都看成数字了, 这个如何理解呢? 即便我调用 0+[], 也是看作字符串相加的, 咋{}+[]就是俩数字了?
Mexion
2022-08-10 15:29:35 +08:00
@lawler 我要反驳一下这个图。
首先 NaN 类型不是 js 独有的,而是 IEEE 754 的规范,它是数值类型也不是 js 独有的,在其它语言中也是一样的,比如在 go 中是 float64 ,在 java 中也是 double 或者 float ,不管用不用 js 这都是要处理的特殊情况。
9999999999999999 这个是精度溢出了。
0.1+0.2 !== 3 ,这也不是 js 的问题,大多数语言都有这个问题,你可以看看其他语言是什么结果: https://0.30000000000000004.com/
没传任何值,max 返回无穷小作为最大值,min 返回无穷大作为最小值,不知道有什么问题,完全符合逻辑。
其它都是些隐式转型的问题,js 作为一门弱类型语言,在判断时== 有问题,所以专门给了个===来判等,==会隐式转换,===不会隐式转换,所以直接使用 === 即可解决大部分问题,现在前端基本没有用==的。
ifdef
2022-08-10 15:35:17 +08:00
@bthulu 这里 {} 会被当做一个空的块,因此什么都不会执行;+会当作算术运算符,因此 + []相当于 + Number([]),所以是 0 。然而谁会在实际项目里这样写呢,好无聊..
xz410236056
2022-08-10 15:57:19 +08:00
@fox0001 #74
“如果它们是不合理的,就应该有新技术替代它们吧?”
并不是。这个世界不是程序员组成的,不存在好技术一定替换旧技术,它出来的早且还能用,大家没有换的动力。你用新技术其他所有的去适配你吗,巨硬都没这本事。HTML+JS+CSS 这个方案本事就是在打补丁,完美的方案 HTML 都不应该存在。

剩下的可以看

https://www.zhihu.com/question/508865977/answer/2294083632

这个回答
YasinChan
2022-08-10 16:08:09 +08:00
@lawler 图中大部分都可以用 js 强制类型转换的概念来解释
dlmy
2022-08-10 16:23:23 +08:00
你这跟我同事吐槽测试一样,不用脑子,有手就行
Email
2022-08-10 17:18:45 +08:00
至少做出了一个像样的产品之后再来吐槽吧,而不是用两天就 嘿嘿嘿
binfengxy
2022-08-10 22:33:45 +08:00
[copy & paste]
JSON 之父:JavaScript 已非常复杂,我们能做的最好的事情就是让它退役
https://news.cnblogs.com/n/726211/
xiangyuecn
2022-08-11 00:02:12 +08:00
翻翻 20 年前教程来学,绝对简单

html:< div|span class style >
css:优先考虑上面这种内联(拒绝 tailwind )
js:es3 ,没有心智负担(拒绝 ts )
tairan2006
2022-08-11 00:10:09 +08:00
你这个吐槽…只能说明你各种语言写的太少…不在点子上
fox0001
2022-08-11 00:29:06 +08:00
@xz410236056 #92 它有存在的意义了,所以这不算是“存在即合理”?
laolaowang
2022-08-11 08:31:33 +08:00
为了这些破事,争来争去,喜欢就用,不喜欢就不用

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

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

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

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

© 2021 V2EX