与Ruby 相比,NodeJS 有哪些优势

Python018

与Ruby 相比,NodeJS 有哪些优势,第1张

Google JS Runtime 非常快

nodejs 默认 async(异步),有些时候快一些

适合 one page app (比如gmail那样的)我觉得的是更适合ajax所以才这样

语言统一,不用前后台换来换去,都是javascript(有人不喜欢javascript,可以学 coffee script),同时和mongodb结合比较好(相比SQL)。现在有一个MEAN stack: mongodb, express, angular and nodejs,貌似学好了很厉害。

Ruby on Rails优势

成熟,gem很好很多很全(不过nodejs现在用的人越来越多了)

会的人比较多(至少再美国)

学起来相对比nodejs要容易。nodejs的 abstraction(抽象?)比RoR少,还涉及到 callbacks(因为是异步)

移动端可能要求ajax多一些(如果你不做 native app),这个主要是前台设计(个人认为)。如果是点评网站的话,我觉得可能 Ruby on Rails 还是更合适一些。

一种方法是直接在Ruby里跑命令行node app.js arg1 arg2,但略挫了点,而且Nodejs的代码里是有数据库/redis连接的,每次重新连接,是不是会造成额外的开销?

另一种方法是通过Unix Domain Socket

我用 Node.js 开发了 Am I Hacked,算是有一点用 Node.js 支持大流量的经验。先列一些数字

服务器是 Linode 512,也就是 Linode 上最低端的 VPS ,只有 512MB 的内存。

数据库,Node.js 程序和静态文件都放在同一台服务器上。

大部分查询耗时 20-100ms 。少数查询由于缓存 miss 较多,耗时会高达500ms。

最高日PV超过了一百万,Google Analytic 上显示的同时在线人数最高达2000。

平均每秒能完成20-30次查询,瓶颈在磁盘IO,CPU几乎无压力。

虽然压力如此之大,首页几乎都能在一秒内打开,查询也会在3秒内返回。

Node.js 程序占用内存 90MB-110MB,剩余内存都被磁盘缓存占据。

以我的了解,Python 和 Ruby 上的非 Event Driven 的 Framework 根本不可能达到这样的性能。

然后说说 Node.js 的其他优点

Node.js 的架构与 Django, Rails 等传统的 Framework 不同,不需要放在 Nginx / Apache 后,利用 WSGI, CGI 之类的接口一板一眼的 [接受Request] ->[运行程序逻辑] ->[生成并返回Response]。这是一个巨大的变化,之前一些无法想象的功能都有可能实现了。比如 https://github.com/Miserlou/DirtyShare 可以用浏览器实现 P2P 的文件传输。正因为 Node.js 可以更精细的控制 Request 和 Response 的时间和内容,websocket 似乎天生就是为 Node.js 而生的,而配合 http://socket.io 这个神奇的库之后,在 realtime webapp 这个领域,Node.js 已经没有对手了。

Node.js 的包管理器 npm 设计得比 python 和 ruby 好很多。有很多的 module 开发者。

当然也有一些缺点