与 Ruby 相比,NodeJS 有哪些优势?

2015-02-27 13:04:18 +08:00
 esyed

对于前端转后端的童鞋来说,可以直接用前端语言写后台,这个是优势
对于其他童鞋来说,用NodeJS有啥优势呢?
有什么非用Node不可的理由么?

13463 次点击
所在节点    程序员
92 条回复
esyed
2015-02-27 23:09:09 +08:00
@joyee 年收入3.5b,手续费能赚这么多?
node是否不适合用来实现复杂业务逻辑?
joyee
2015-02-27 23:17:33 +08:00
@esyed 感觉是的,linkedin的采访也说了Node不适合处理复杂的数据,主要优势还是I/O,这个确实是强项,而其他用异步I/O模型的技术又没有Node那么热闹的社区和V8这样的挂……

等到ES6和promise/generator的异步处理普及了可能应用场景会更广一点,不过JS里那堆坑……业务一复杂人一多难免就会踩啊踩……
esyed
2015-02-27 23:21:54 +08:00
@joyee http://www.digitaltransactions.net/news/story/3243
3.5b是2011年的交易量吧,不是收入
V8这样的挂.. .挂啥?
joyee
2015-02-27 23:26:25 +08:00
@esyed nearform的那篇采访说的是bear in mind that checkout is a system that generates $3.5Billion revenue for PayPal……

V8是个黑魔法外挂的意思……XD
joyee
2015-02-27 23:29:00 +08:00
@esyed 你转的那个新闻说的是移动端的交易量……他那个Node和Java一起写的是整个checkout系统,数字应该是巧合吧……
jun4rui
2015-02-28 11:24:22 +08:00
Nodejs用来处理复杂的逻辑还是不行,因为javascript那个异步+回调简直就是复杂逻辑的克星啊!

但是现在前端和取数据这一块的逻辑真的99%的网站都不复杂,而IO才是瓶颈。所以Nodejs缺点得以回避,优点得以发扬光大。
futursolo
2015-02-28 12:55:34 +08:00
回调地狱23333
hooluupog
2015-02-28 15:20:48 +08:00
性能吧,感觉js引擎提升后,js一下高大上了许多。
joyee
2015-03-01 08:52:23 +08:00
@jun4rui JS ≠ 回调,并且 JS ≠ 异步。是否异步和鼓励回调,都是由 runtime 决定的,Node.js 确实是异步并且整体上鼓励回调 ,但不代表 JS 本身就是这样不能改了。浅一点来说可以用 CPS,深一点来说ES6 的 promise 和 generator 都是回调的代替方案,Node.js 上的 Promise 和 Generator 也都开始普及了(比如 Q,co/Koa)。抛开 Node.js 来说,国内的 fib.js 就把异步逻辑放在了 runtime,上层的 JS 代码用同步的方式写,下层在 runtime 里进行异步的处理,应用层的程序员也完全可以避开回调。
XadillaX
2015-03-01 12:41:39 +08:00
我就说一句话,我是一个被 NPM 宠坏的孩子,这让我不想去碰 ruby,python 等一样有包管理的语言。
jun4rui
2015-03-01 12:45:28 +08:00
@joyee 写复杂逻辑根本不是js应该做的,架构上就应该避免,否则就是扬短避长了。
jun4rui
2015-03-01 12:48:48 +08:00
@XadillaX 看你是前端还是后端了,前端很多工具都要用nodejs装没办法。
XadillaX
2015-03-01 13:00:16 +08:00
@jun4rui 我只是说包管理的机制。python 是一套一套版本来的,npm 各版本互不干扰,一个项目可以有各种版本的包,py 等只能同时用一套版本,一切换就是一套。
XadillaX
2015-03-01 13:00:43 +08:00
@jun4rui 另,我是后端,是前端渣,不会前端的各种东西。
jun4rui
2015-03-01 17:42:01 +08:00
@XadillaX 哈哈,正好,我现在主要前端
jun4rui
2015-03-01 17:49:10 +08:00
@XadillaX 这个对架构现实的软件我觉得不重要,可能我这里环境没这个需求。

我这里要重建已经稀烂的Java项目,在nodejs、Python、PHP之间考虑,最后还是选择了Python,nodejs对太多的复杂逻辑写起来实在让人担心。而且框架django稳定性延续性都很棒,适合长期维护使用。

换nodejs+express我真没这个胆量去做一个长期维护的玩意。


但是一些短小精悍逻辑简单直接的我觉得nodejs倒是首选。

可能还和咱们开发要求不同有关系,也许你那边确实nodejs能抗大任。
qiukun
2015-03-01 18:31:57 +08:00
@XadillaX 那你多个node的时候得nvm吧?在这个层面隔离py 和 ruby也很六呀。你这个黑的无力。(nvm也是从rvm来
qiukun
2015-03-01 18:38:57 +08:00
@qiukun
@XadillaX docker够用就更好
joyee
2015-03-01 19:09:47 +08:00
@jun4rui 是的,JS确实不适合写复杂逻辑,但原因不是异步+回调,而是弱类型+语言设计本身的各种坑,多人协作容易出乱子……
joyee
2015-03-01 19:12:18 +08:00
@jun4rui 异步不一定要浮现在应用层代码,回调有很多替代方案,但语言本身的坑怎么填都填不过来……除非用 TypeScript 之类带类型检查和填了坑的编译到 JS 的语言,但是又有点隔山打牛了……

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

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

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

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

© 2021 V2EX