node.js在web开发上下文中的位置?

Ben*_*jia 7 javascript c++ event-driven node.js

我知道node.js被称为在V8 Javascript引擎上托管的"事件驱动的I/O"服务器端javascript .我访问了node.js网站,然后阅读了wikipedia条目,但是不能完全了解在哪里使用它以及它将如何有用."事件驱动的IO"?"V8 Javascript引擎"?在某些情况下,我看到使用"服务器端"javascript有点矫枉过正.我在node.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/');
Run Code Online (Sandbox Code Playgroud)

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

我还在github中分叉了node.js repo以了解它的工作原理,结果发现它的一些模块是用C++编写的.那么它毕竟不是一个JavaScript?

有人可以给我一个清楚的解释吗?对不起,如果问题不明确或者其他什么,我只是一个初学者.将欣赏任何意见/建议.谢谢

sje*_*397 9

简单来说,node.js服务器是Apache Web服务器的替代品 - 但它主要是用JavaScript运行的,它运行在服务器上(由V8引擎执行)而不是客户端.它可以通过包含在JavaScript接口中的"本机代码"模块(用C++编写)来扩展以添加功能,但AFAIK大多数node.js模块都是纯JavaScript.

"事件驱动的I/O"只是一个术语,描述了您在JavaScript中习惯使用的常规异步回调机制.在node.js中,您为各种事物提供回调,并在相关事件发生时调用您的函数.

根据您添加的模块数量,与Apache类似,node.js服务器相对轻量级,并且在某些方面更简单.

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

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

这是我刚刚遇到的一篇文章,也可以说明一点:什么是Node.js?