3

http://nodejs.org/#about它说以下内容:

“Node 在设计上类似于 Ruby 的 Event Machine 或 Python 的 Twisted 等系统并受其影响。Node 将事件模型更进一步——它将事件循环呈现为一种语言结构,而不是一个库。”

是否有其他框架或语言同样公开事件循环?

4

3 回答 3

6

Tcl 一直拥有这种能力(过去 2 年)。见http://www.tcl.tk/about/netserver.html

这并不是说 Tcl 做了——或者应该做——Javascript 和/或 node.js 所做的一切。但这是对“其他框架或语言......同样暴露事件循环”的问题的有效答案。

于 2010-12-12T19:28:52.770 回答
3

老实说,我认为目前还没有可以与 Node.js 相媲美的东西。

为什么?好吧,基本上是因为 JavaScript 从一开始就是单线程的,这使得语言演变成今天的样子,一种非常适合异步编程的语言,就像你在 Node.js 中所做的那样。

函数是一流的对象,如果您想要类似 Node 的体验,则必须具有闭包。例如,您也可以将纯 C 包装在事件库周围并使用它。但是那会有多有趣呢?即使使用了twisted,您也无法获得Node.js 的体验。

第二点是 Node.js - 除了fs模块的同步函数 - 没有阻塞函数,所以虽然你当然可以在 Python 中进行这种编程风格,但你永远不知道该库调用是否会阻塞你的整个程序。并杀死服务器的吞吐量。

Node 也很快,就像真的很快一样。V8 绝对领先于 Python 和 Ruby,是的,您可以为两者编写 C-Extensions,但您也可以为 Node.js 这样做。使用 V8 的另一个优点是,谷歌在该引擎上投入了大量时间/金钱,Crankshaft已经在进行另一次高达 2 倍的改进。

Node.js 有更多的优点,它是一个完整的框架(而 Twisted 主要是异步网络)并且它是 JavaScript。

后一种可能听起来很愚蠢,但是能够重用代码并且不必进行上下文切换,以及能够使用成熟的框架进行 DOM 操作(嗯,只要 jsom 进入更稳定的状态) 是另一个杀手级功能。

如果您还没有完成,我建议您观看我们的Tag Wiki中列出的一些演讲。
特别是 YUI 显示了在不久的将来等待我们的可能性。

所以总结一下:
虽然有相当多的框架有一个事件循环,但只有循环本身不会给你与 Node.js 相同的体验,所以你不应该期望在做事时有类似的体验例如在 C 或 Java 中。

于 2010-12-11T15:48:03.797 回答
0

对于 java 平台,我想你可以将netty与 node.js进行比较

于 2010-12-11T21:23:04.820 回答