答案 0 :(得分:7)
Node.js与Twisted的共同点多于Erlang / OTP。 Node.js只是一个单线程SEDA事件循环。 Node.js与Erlang VM在分发,热代码重新加载和流程可扩展性方面没有任何关系,它与“使用Javascript糖的Erlang”无关“
答案 1 :(得分:7)
也许是因为你的Erlang知识,你认为Node.js与“节点”(作为erlang节点)有某种关系,但它只是名称。
Node.js的主要思想是推迟所有昂贵的I / O操作并将回调分配给这些操作的结果。原因是I / O阻止了此时正在运行的(唯一)进程。鉴于您正在以正确的方式编码,Node.js将为您处理此问题。
一个简单的例子是数据库调用:
result = SQL.query("EXPENSIVE SELECT HERE")
doSomething(result);
moreStuff(); // This line must wait until the previous ones are completed.
在节点中,您将以一种非常不同的方式对此进行编码:
SQL.query("EXPENSIVE SELECT HERE", function(result) {
doSomething(result);
});
moreStuff(); // This line executes inmediately
如果您的Node.js脚本中有错误的代码,例如:
while(true) { }
然后你阻止了这个过程,它将无法处理比当前请求更多的请求,因此在Node.js中必须遵循上述指南。
答案 2 :(得分:4)
答案 3 :(得分:1)
node.js中没有“节点”
如上所述,当你运行
node my_script.js
您正在运行一个V8 java脚本解释器实例 (在其生命周期中使用一个核心。)