node.js在web开发环境中适合哪里?

我知道node.js被认为是在V8 Javascript引擎上托pipe的“事件驱动I / O”服务器端JavaScript。 我访问了node.js网站,然后阅读维基百科条目,但无法完全了解在哪里使用它,以及它将如何有用。 “事件驱动IO”? “V8 Javascript引擎”? 在某些情况下,我看到使用“服务器端”JavaScript是一个小小的矫枉过正..我拿这个代码在wiki.js的维基百科条目 :

var http = require('http'); http.createServer(function (request, response) { response.writeHead(200, {'Content-Type': 'text/plain'}); response.end('Hello World\n'); }).listen(8000); console.log('Server running at http://127.0.0.1:8000/'); 

我一直在想,在运行一个服务器,特别是在应用程序的前端部分执行特定的JavaScript文件是否真的有一个重要的目的?

我还分叉了github中的node.js repo来学习更多关于它是如何工作的,事实certificate它的一些模块是用C ++编写的。 那么它毕竟不是一个JavaScript?

有人能给我一个清楚的解释吗? 对不起,如果问题不明确或什么的,我只是一个初学者。 将欣赏任何input/build议。 谢谢

简单来说,node.js服务器就是Apache Web服务器的替代品 – 但它主要是用服务器上运行的JavaScript(由V8引擎执行)编写的,而不是在客户端。 它可以用包含在JavaScript接口中的“本地代码”模块(用C ++编写)进行扩展以添加function,但AFAIK大部分node.js模块都是纯JavaScript。

“事件驱动I / O”只是一个术语,用来描述您在JavaScript中使用的常规asynchronouscallback机制。 在node.js中,您为各种事物提供callback函数,并且在发生相关事件时调用您的函数。

根据添加的模块数量,与Apache类似,node.js服务器是相对轻量级的,在某些方面要简单得多。

我看到的node.js的两个主要优点是:

  1. 它允许您用相同的语言编写Web应用程序的服务器端和客户端部分。 在某些情况下,您可以在两边使用相同的代码。
  2. 它使服务器端编码可以被那些了解JavaScript的所有Web开发人员访问,而无需学习更常见的服务器端语言,如PHP或Java。

这里是我刚刚遇到的一篇文章,可能也会说明一些问题: 什么是Node.js?

虽然我不能说什么,但是我会重复他分享的这个博客链接,因为这是我发现能够快速解释nodejs的最佳资源:

http://radar.oreilly.com/2011/07/what-is-node.html

另外请注意,它来自于OReilly,我们大多数人都知道他是一般程序员的最佳参考书的出版商;)

我一直在想,在运行一个服务器,特别是在应用程序的前端部分执行特定的JavaScript文件是否真的有一个重要的目的?

这是完全错误的。 这是关于节点的最错误的假设。 节点在服务器上运行JavaScript 就像ruby或php或asp.net代码运行一样。 浏览器也可以运行javascript的事实对节点没有影响。

当然,您可以在服务器和客户端之间共享模块(例如,表单数据的validation例程),但是基本上这些代码库是不同的,因为它们用于不同的目的。

我还分叉了github中的node.js repo来学习更多关于它是如何工作的,事实certificate它的一些模块是用C ++编写的。 那么它毕竟不是一个JavaScript?

是的,节点是使用V8引擎parsingjavascript的服务器。 它必须写一些东西。 我会给你一个比较:微软的.NET代码大部分都是用.NET编写的,但是主要的代码实际上完成了工作,运行时(大多数人所说的CLR)pipe理托pipe该代码是用C编写的。与节点相同的东西。 是的,大部分(正如你所看到的)是用javascript编写的,但运行其他所有内容的核心库都是用C语言编写的。

有人能给我一个清楚的解释吗? 对不起,如果问题不明确或什么的,我只是一个初学者。 将欣赏任何input/build议。 谢谢

我希望这有助于部分清除它。 有很多东西可以弥补,而且不会涉及到even-io(涉及理解进程,线程和io访问以及很多其他的东西),这几乎是这个问题的基本高级答案。 如果你愿意的话,我邀请你到聊天服务器上的nodejs房间,进行更加随机的讨论。 http://chat.stackoverflow.com/rooms/642/node-js

至于你问的第一个问题:

它在哪里适合?

同样的地方ruby和PHP和Perl和Python和asp.net做。 在服务器上生成客户端收到的代码。

我还没有看到有人给出一个简单的答案呢。

Node.js是:

  • v8的JavaScript引擎
  • 一个事件循环
  • 一些c ++绑定,除其他外,给v8 IOfunction(networking和文件IO)

需要注意的是,Node并不一定要用于Web开发。 目的是“放弃IO”。