3.4.6 Node.js

Node.js是JavaScript在服务器端编程的一种应用,它由Ryan Dahl在2009年发明。Node.js采用了一种事件驱动、异步IO的方式来响应HTTP请求,这与上面介绍的其他编程技术都大不相同。异步IO的好处在于它能用单线程处理高并发;同时这也意味着在编程中大量使用回调函数。下面的示例程序说明了这一点:

var http = require('http');

http.createServer(function(request, response) {
  response.statusCode = 200;
  response.setHeader('Content-Type', 'text/plain');
  response.write("The following is what I got:\n");
  request.on('data', function(chunk) {
    response.write(chunk);
  }).on('end', function() {
    response.end("\nThat's all!");
  });
}).listen(8090);

在Node.js中,request的消息主体(message body)是通过“data”事件分段读入的,并由“end”事件标记结束:

request.on('data', function(chunk) {
  //...
}).on('end', function() {
  //...
});

在这个例子中我们返回收到的请求消息主体、并在头、尾各加上一句话作为应答。

要运行程序,在命令行上执行(假设程序保存在文件echo.js中)1

node echo.js

然后通过curl客户端来访问它(我们现在要通过POST方法发送一些消息给服务器,通过浏览器没法简单做到):

curl http://localhost:8090/ -d name=Bob

其中 “-d name=Bob” 就是我们发送的请求消息主体2

请动手操作一下看看结果是什么。

关于Node.js的更多介绍,请参考这篇官方文档:https://nodejs.org/en/docs/guides/anatomy-of-an-http-transaction/

关于单线程异步并发模式的优点和缺点,请参考Wiki:https://en.wikipedia.org/wiki/Node.js#Threading

1. 要运行这个程序,请先安装Node.js:https://nodejs.org/en/download/
2. 这个curl命令模拟浏览器的表单(form)提交,用POST方法发送数据,同时设定Content-Type为application/x-www-form-urlencoded。你可以试着指定多个“-d”参数,每个代表表单的一项内容,它们会合并到一起。

results matching ""

    No results matching ""