Javascript Narhall和Node.js之间的差异
我是Node.js的新手,我一直在阅读关于Node.js的文章,这是一个基于Rhino的框架 我的问题是:Javascript Narhall和Node.js之间的差异,javascript,node.js,rhino,narwhal,Javascript,Node.js,Rhino,Narwhal,我是Node.js的新手,我一直在阅读关于Node.js的文章,这是一个基于Rhino的框架 我的问题是: 如果我使用的是Node.js,我可以使用独角鲸及其库/模块吗 Narhall I/O中的库/模块不是被阻止了吗(为什么Node.js如此流行) Node.js是仅用于创建Web服务器还是用于创建一般应用程序,就像Narhall一样 Node.js不应与独角鲸相比较。相反,它应该被比作。与Rhino一样,Node.js也是一个JavaScript解释器 Node.js符合模块规范,因此它的所
Node.js不应与独角鲸相比较。相反,它应该被比作。与Rhino一样,Node.js也是一个JavaScript解释器 Node.js符合模块规范,因此它的所有库都与CommonJS兼容。看起来,独角鲸也是CommonJS兼容的,这意味着它们可以在Node.js中使用 但是首先看看Node.js的标准模块,因为它似乎与独角鲸有很多重叠。另外,请查看Node.js可用的第三方模块列表:
补充答复: 啊,我现在明白了。独角鲸确实很像Node.js。你说独角鲸是一个框架,把我甩了。我现在明白了,事实并非如此。事实上,介绍页面说,您可以在独角鲸解释器的顶部运行Nitro之类的框架 Narhall和Node.js之间的区别基本上是,Narhall使用可插入的JavaScript引擎架构,而Node.js只使用。这两种语言都是JavaScript的“shell”(为了避免与术语“解释器”混淆,现在我们将它们称为“shell”) 我不确定一个人可以在多大程度上使用为任一平台编写的CommonJS库,并在另一个平台上使用它。我想所有的纯JavaScript库都是交叉兼容的。Node.js确实使用了非阻塞I/O模型,因此Narhall的一些二进制模块可能无法在Node.js上正常工作 不过Node.js强调回调风格的编程(以最大限度地利用非阻塞I/O)。对于一个经验丰富的JavaScript程序员来说,这不是一个问题,因为我们习惯于
setTimeout()
,XMLHttpRequest
等等。事实上,作为一个经验丰富的JavaScript程序员,我有点喜欢Node.js的风格。独角鲸感觉太像C了
示例: 这就是我所说的独角鲸上节点的不同“感觉” 在独角鲸中,对文件进行slurping的示例如下:
var fs = require("file");
var data = fs.read(myfilename); /* Code stops at this point
* until all data is read
*/
/* Process data here */
在Node.js中,它是:
var fs = require('fs');
fs.readFile(myfilename, function(err,data) {
/* Process data here */
});
/* readFile returns immediately and code continues
* executing while file is being read
*/
就像setTimeout
,读取Node.js中的文件是异步的(您的代码需要等待硬盘查找和读取数据,在此期间您可以运行其他代码)