我不完全明白Node.js是关于什么的。也许是因为我主要是一个基于web的商业应用程序开发人员。它是什么?它有什么用?

目前我的理解是:

编程模型是事件驱动的,特别是它处理I/O的方式。 它使用JavaScript,解析器是V8。 它可以很容易地用于创建并发服务器应用程序。

我的理解正确吗?如果是,那么事件I/O的好处是什么,它只是更多的并发性的东西吗?另外,Node.js的方向是成为一个框架,像基于JavaScript(基于V8)的编程模型吗?


当前回答

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。

对我来说,这意味着你的三个假设都是正确的。图书馆看起来确实很有前途!

Node.js是一个为服务器端JavaScript代码构建的开源命令行工具。你可以下载一个tarball,编译并安装源代码。它允许你运行JavaScript程序。

JavaScript由谷歌开发的V8引擎执行,用于Chrome浏览器。它使用JavaScript API访问网络和文件系统。

它的性能和执行并行操作的能力很受欢迎。

理解node.js是我迄今为止找到的对node.js的最好解释。

下面是一些关于这个主题的好文章。

使用Node.js学习服务器端JavaScript 这一次,你将学习Node.js

两个很好的例子是关于如何管理模板和如何使用渐进式增强。您只需要几段轻量级的JavaScript代码就可以使它完美地工作。

我强烈建议你看一下这些文章:

视频玻璃节点 Node.js YUI DOM操作

选择任何一种语言,试着记住如何管理HTML文件模板,以及必须做什么来更新DOM结构中的单个CSS类名称(例如,用户单击菜单项,您希望将其标记为“selected”并更新页面内容)。

使用Node.js就像在客户端JavaScript代码中一样简单。获取DOM节点并将CSS类应用于该节点。获取DOM节点并innerHTML内容(为此需要一些额外的JavaScript代码。阅读这篇文章了解更多)。

另一个很好的例子是,你可以让你的网页兼容JavaScript打开或关闭同一段代码。假设您有一个用JavaScript编写的日期选择,允许用户使用日历选择任何日期。您可以编写(或使用)同一段JavaScript代码,使其在打开或关闭JavaScript时正常工作。

闭包是在创建代码的上下文中执行代码的一种方式。

对于并发来说,这意味着您可以定义变量,然后初始化一个非阻塞I/O函数,并为它的回调发送一个匿名函数。

当任务完成时,回调函数将在变量的上下文中执行,这就是闭包。

闭包非常适合使用非阻塞I/O编写应用程序的原因是,它非常容易管理异步执行的函数的上下文。

此外,别忘了提到谷歌的V8非常快。它实际上将JavaScript代码转换为机器代码,具有与已编译二进制代码相匹配的性能。所以,连同所有其他伟大的东西,它是疯狂的快。