如果 node 没有显式异步这个喷点,他们还会喷什么

2015-12-12 09:58:00 +08:00
 123s
6575 次点击
所在节点    Node.js
72 条回复
Mark24
2015-12-12 10:17:54 +08:00
JS 语法挫,坑多。这种语言不改版,继续走……感觉就在做试验,不同浏览器对最新 ES6 支持不同,火狐主导了 ES 的标准,谷歌提供了 V8 引擎, V8 引擎对 JS 支持并不是最新,最全,最百分百,node 依赖 V8 。问题来了,随着 JS 升级新特性加入,浏览器支持标准有良莠不齐,实现效果都不太一样。各种第三方库,怎么活?以后怎么过?
Mark24
2015-12-12 10:22:49 +08:00
怎么发出去了…还没打完……后端问题一致的, node 将会面临 JS 碎片化带来的问题。
JS 开发效率真的高么?

其他语言也有大并发框架。 Python 光光是从 2 迁移到 3 就够烦了。 JS 怎么迁。

对了 PHP7 性能大幅提升。

你觉得放着好用的不用……用一个基本问题都解决好的,所谓的新技术……老板估计根本听不进去。

只有技术人员会热衷吧。

这是我的一点看法。
monsterxx03
2015-12-12 10:28:26 +08:00
就 js 那点语法抽象能力,先告诉我到底有什么优点
Mark24
2015-12-12 10:33:48 +08:00
@Mark24 是基本问题都没解决,不是都解决。

个人觉得,好的开发语言,要

语法要优美,开发效率要高,要稳定,就算升级,迁移要无痛。各平台效果要一致,不要给开发人员增加额外负担。第三方库要多,不仅要多,对于库本身开发难度也不要那么大。这些都是作为万金油要解决的。 JS 想做万金油,请问 JS 解决了多少…… Node 解决了多少?

后期维护,建立多种框架,怎么玩。

一个 JS 切换好几种写法??
呵呵

至少得准备好了,再来踢馆。 Node 就用异步的一个卖点,社区就得瑟的不得了。拜托其他语言也有。干活,四五个月,不能突然觉得做不下去了,切换技术栈。别逗。要成熟一点。

谷歌和火狐联手, JS 还好说。
如果是重写 Python 解释器, Node 异步特性也能得到,意义在哪里?
其他都不考虑么

补充看法,有点偏激
p412726700
2015-12-12 10:45:19 +08:00
js 被喷的越激烈 是不是就说明 js 被关注的就越多
guoziyan
2015-12-12 11:24:30 +08:00
没人用的和被人喷的,看样子 js 属于后者。
hcymk2
2015-12-12 11:30:48 +08:00
黑都是青逼出来的。
bydmm
2015-12-12 11:33:33 +08:00
NODE 现在的新趋势是只写 VC 层,业务都走 API, 有时候做一点多 API,IO 整合的工作。
整个架构总的来说还是异构的,有 NODE 有 PHP/JSVA/PYTHON 。
所以你们也别急着喷 NODE 。
jiongxiaobu
2015-12-12 11:36:33 +08:00
喷的人应该并不真的会 JS 吧
123s
2015-12-12 11:39:10 +08:00
@bydmm 这种相当于前后分离,分担点工作吗?
zhouyg
2015-12-12 11:39:42 +08:00
世界上只有两种语言,没人用的和被人喷的。
gamexg
2015-12-12 11:42:34 +08:00
@Mark24 python 不用重写解释器,很早就有完整的异步支持了。异步回调就不说了, gevent 库可以在不修改代码的情况下直接将多线程同步程序变成协程异步程序,而且对调用的现存第三方库同样有效。直接按照一般的多线程同步方式写代码, gevent 内部帮你改成协程异步的实现。

对 node 不熟悉,只用过 socket.io ,前后端都在一个项目里面的确方便。但是匿名、回调好多。

现在用 python ,觉得动态类型语言用起来方便,开发速度快。但是没有固定的类型定义,没有编译时检查,一但代码量上去了很容易一片混乱。

java 本身有太笨重的感觉,例如 一个 post 请求不算对结果处理就达到了 20 行...不过还好有第三方库。

go 用起来的确好用。 信道 、协程用起来太方便了,而官方推荐使用 信道 同步,结果有几个函数已经进入回调、信道地狱模式了,那几个关联函数平均每个都有 7 个以上的匿名函数+协程...
yangtze
2015-12-12 12:00:15 +08:00
@gamexg Python 虽然可以支持异步,但是在 CPU 密集型业务上比 Node 弱太多
shyling
2015-12-12 12:10:25 +08:00
@zhouyg 正解
jukka
2015-12-12 12:14:42 +08:00
Node 会以他自己的方式融入整个项目的技术栈,现代项目很少有 XXX is everything 了。
aszxqw
2015-12-12 12:52:16 +08:00
如果没有异步这个喷点,我觉得 node.js 真的没什么好黑的。
出色的包管理和社区,而且对前端开发人员太友好了。
我还是那个观点,如果 node.js 当初是设计成 fibjs 这种协程的结构,真的是非常赞。
bydmm
2015-12-12 12:54:43 +08:00
@123s 不能简单的叫分担工作,在实际的工作中你会发现 Controller 的代码和 View 的代码是强相关的,如果你们公司是传统的后端工程师写 controller 的分工,你会发现这一块经常会出现 view 需要 controller 修改代码的情况。

如果你用过 angularjs 的此类工具,你会发现实际上此类框架的 controller / routing 就是写在 js 里的。
但是 angularjs 等前端 MVVM 工具无论是兼容性,还是各自框架的癖好,都会让你感觉不顺手,比如你就是不喜欢 angularjs 的 binding ,而是就是喜欢用顺手的 jQuery ,然后又像自己能控制 routing 和 controller 怎么办? 这导致很多人一直在尝试和寻找不同的前端 MVVM 框架,再浪费时间之后发现还是不顺手,或者兼容性问题。

最后 NODE 出来了,你会发现前端能用自己熟悉的 JS 语言,然后自己写 controller 和 routing ,并且同时又能和往常一下没有被特别的前端架构所限制(前端想怎么写怎么写, jQuery 又如何?)。

至于 NODE 的异步风格,反正不写业务就还好啦,前端工程师也适应了回调的编程模式。

而且 NODE 在某些情况下还有神奇的优势,比如你有个需求要客户端同步发邮件,同步下载(我指的是对前端的 AJAX 链接不断,等到彻底搞好了才结束,而不是轮询求状态)
123s
2015-12-12 13:03:08 +08:00
@aszxqw 事实上 fibjs 火不起来,已经开源了有 1 年了?
123s
2015-12-12 13:05:23 +08:00
@bydmm 你的意思是除了复杂业务,其他都可以给 node 去做是吧。那样后端只专心业务,展示和逻辑给前端
cheng007
2015-12-12 13:07:28 +08:00
后端逻辑要是稍微复杂,千万别用 NODE.js 。
你试想一下,你的业务逻辑被 IO 引发的 callback 分割的支离破碎,这样的代码怎么设计,怎么维护?
楼上说的 python gevent 比异步回调强的不是一星半点

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

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

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

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

© 2021 V2EX