Node.js的意义是什么?

28

好的,这可能有点直截了当,但Node.js有什么目的/需求呢?

我主要是通过CloudFoundry注意到它,但不太确定它应该做什么。但我猜想它可能是一些非常重要的东西,否则为什么VMWare会支持它。

提前感谢。

5个回答

20

这是一个高效、100%事件驱动的IO框架,足够灵活以利用其发现的最佳底层操作系统功能,使用高级编程语言(很可能是您的客户端使用的相同语言)提供API,在该语言的最佳可用解释引擎上实现,并支持越来越多的第三方库。在服务器端API中也非常有效,但避免在需要大量CPU操作时使用。

  • 高效且100%事件驱动的IO框架
  • 足够灵活以利用其发现的最佳底层操作系统功能
  • 使用高级编程语言(很可能是您的客户端使用的相同语言)提供API
  • 在该语言的最佳可用解释引擎上实现
  • 支持越来越多的第三方库
  • 在服务器端API中非常有效,但避免在需要大量CPU操作时使用

:)


14

Node.js 的IO操作处理得很好。它是异步和非阻塞的,而使用js的优点在于它没有标准的阻塞IO。

它快速(v8引擎非常厉害),可扩展性强,并且具有充满活力的社区和广泛的应用。

有许多出色的库可以在Node上运行,例如 nowsocket.io 等。

它擅长于实时通信和高并发网站。

它还具有代码重复性较低的额外优势。您可以在客户端和服务器上编写相同的MVC代码,并轻松支持非JS用户。

更多阅读:


9

Node.js是一个基于事件驱动、异步I/O框架,使用了Google的V8 JavaScript引擎。Node.js通常用于处理大型客户端-服务器JavaScript应用程序。

node.js标签提供了更多背景信息,可以指导您朝正确的方向发展:https://stackoverflow.com/tags/node.js/info


7
Node利用Javascript的一级函数,让你可以使用动态脚本语言编写服务器端程序,并获得非常有竞争力的性能。Node的速度不如Haskell、Erlang或Go快,但是它与Java具有竞争力,并且优于Ruby、Python和PHP。
Haskell、Erlang、Go、Java、Ruby和Python都有事件IO Web框架,但它们也有阻塞库作为陷阱。
尽管Javascript有其缺点,但它是Web的通用语言,因为浏览器是事件驱动的,所以Javascript不仅适合事件驱动式编程,大多数Web开发人员也习惯编写事件驱动的Javascript。
还要查看这篇文章:http://www.theregister.co.uk/2011/03/01/the_rise_and_rise_of_node_dot_js/

你有关于Haskell和Go更快的任何基准测试吗? - Raynos
http://www.ostinelli.net/a-comparison-between-misultin-mochiweb-cowboy-nodejs-and-tornadoweb/ - generalhenry
http://www.yesodweb.com/blog/2011/3/preliminary-warp-cross-language-benchmarks - generalhenry
这些涉及Haskell和Erlang。我想要一份声明,说明Go比node更快。由于没有使用多个节点进程跨核心进行扩展,因此Haskell的比较也是不公平的。我可以相信Haskell有优势,但并不是压倒性的。 - Raynos
我见过一些也包括Go的,但是谷歌在搜索Go(或golang,因为它通常被称为Go)方面具有讽刺意味的糟糕。 - generalhenry
1
Go和Haskell是强类型语言,采用多处理器并发模型,这种模型深度嵌入到语言中。 它们运行更快,使用的内存更少。 但是Node.js拥有更大的社区,这也是我个人使用Node.js的原因。 - generalhenry

2

那个链接已经失效了。 - JohnFx

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接