我不完全明白Node.js是关于什么的。也许是因为我主要是一个基于web的商业应用程序开发人员。它是什么?它有什么用?
目前我的理解是:
编程模型是事件驱动的,特别是它处理I/O的方式。 它使用JavaScript,解析器是V8。 它可以很容易地用于创建并发服务器应用程序。
我的理解正确吗?如果是,那么事件I/O的好处是什么,它只是更多的并发性的东西吗?另外,Node.js的方向是成为一个框架,像基于JavaScript(基于V8)的编程模型吗?
我不完全明白Node.js是关于什么的。也许是因为我主要是一个基于web的商业应用程序开发人员。它是什么?它有什么用?
目前我的理解是:
编程模型是事件驱动的,特别是它处理I/O的方式。 它使用JavaScript,解析器是V8。 它可以很容易地用于创建并发服务器应用程序。
我的理解正确吗?如果是,那么事件I/O的好处是什么,它只是更多的并发性的东西吗?另外,Node.js的方向是成为一个框架,像基于JavaScript(基于V8)的编程模型吗?
当前回答
此外,别忘了提到谷歌的V8非常快。它实际上将JavaScript代码转换为机器代码,具有与已编译二进制代码相匹配的性能。所以,连同所有其他伟大的东西,它是疯狂的快。
其他回答
V8是JavaScript的一个实现。它允许您运行独立的JavaScript应用程序(以及其他功能)。
Node.js只是一个为V8编写的库,用于执行事件I/O。这个概念解释起来有点棘手,我相信有人会给出比我更好的解释……要点在于,与其进行一些输入或输出并等待它发生,不如不要等待它完成。例如,请求文件的最后编辑时间:
// Pseudo code
stat( 'somefile' )
这可能需要几毫秒,也可能需要几秒钟。有了事件I/O,你只需发出请求,而不是等待你附加一个回调,当请求完成时运行:
// Pseudo code
stat( 'somefile', function( result ) {
// Use the result here
} );
// ...more code here
这使得它很像浏览器中的JavaScript代码(例如,具有Ajax风格的功能)。
要了解更多信息,你应该看看文章Node.js是真正令人兴奋的,这是我对库/平台的介绍…我觉得很不错。
闭包是在创建代码的上下文中执行代码的一种方式。
对于并发来说,这意味着您可以定义变量,然后初始化一个非阻塞I/O函数,并为它的回调发送一个匿名函数。
当任务完成时,回调函数将在变量的上下文中执行,这就是闭包。
闭包非常适合使用非阻塞I/O编写应用程序的原因是,它非常容易管理异步执行的函数的上下文。
Node.js是一个为服务器端JavaScript代码构建的开源命令行工具。你可以下载一个tarball,编译并安装源代码。它允许你运行JavaScript程序。
JavaScript由谷歌开发的V8引擎执行,用于Chrome浏览器。它使用JavaScript API访问网络和文件系统。
它的性能和执行并行操作的能力很受欢迎。
理解node.js是我迄今为止找到的对node.js的最好解释。
下面是一些关于这个主题的好文章。
使用Node.js学习服务器端JavaScript 这一次,你将学习Node.js
Q:编程模型是事件驱动的,特别是它处理I/O的方式。
正确的。它使用回调,因此任何访问文件系统的请求都会导致一个请求被发送到文件系统,然后Node.js将开始处理它的下一个请求。它只在从文件系统获得响应后才会关心I/O请求,这时它将运行回调代码。但是,可以进行同步I/O请求(即阻塞请求)。由开发人员在异步(回调)或同步(等待)之间进行选择。
Q:它使用JavaScript,解析器是V8的。
Yes
Q:它可以很容易地用于创建并发服务器应用程序。
是的,尽管您需要手工编写相当多的JavaScript。最好查看一个框架,比如http://www.easynodejs.com/,它提供了完整的在线文档和示例应用程序。
嗯,我理解
Node的目标是提供一种简单的方法 构建可扩展的网络程序。 Node在设计上类似于Ruby的Event Machine或Python的Twisted等系统,并受其影响。 V8 javascript的事件I/O。
对我来说,这意味着你的三个假设都是正确的。图书馆看起来确实很有前途!