Node.JS 2.Hello World
2.Hello World
2011年9月12日
16:15
老生常谈,接下来的第一个示例也是 "Hello World"。
下面是一个 Node.JS 的 Http 服务端,服务端在收到请求的2秒后会返回 "Hello World"。
http = require('http');
http.createServer(function(req, res) {
setTimeout(function() {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.write('Hello World');
res.end();//截至最新版 res.close(); 以替换为 res.end();
}, 2000);
}).listen(8000);
http://127.0.0.1:8000");
执行代码:
node hello_world.js
现在可以打开浏览器来访问 http://127.0.0.1:8000了。你也可以用 IP/URL 在远程的机器来访问这个服务。
接下来是代码的解释。
前两行是导入
Node.JS 的内置 modules, "sys" 跟 "http"。即:var some_var = require('build-in_module_name');
上面我们是导入了:
var sys = require('sys'),
http = request('http');
在上面,'sys' module 提供了输出数据到命令行。而 http module 这提供了一个 Http 的服务端,同样你以后也可以导入自己的 modules,
更多的将会在后面的文章中介绍。
然后我们建立了一个 HTTP Server 并且对 8000 端口进行了监听。
http.createServer(function(request, response) {
…
}).listen(8000);
在request 对象中包含了这次请求的信息,如请求的方法: GET, POST, DELETE...,以及其他的信息,如请求的 URL,Headers等等。
而response 则提供了对请求进行响应的功能,如在示例中返回了 "Hello World"。
当有请求进来的时候,服务端在返回任何响应前会先等待两秒-- 通过 setTimeout() 这个函数。
像这样: setTimeout(function() { … }, 2000);
在两秒后他会执行匿名的回调函数,函数体则如我们上面写的:
response.writeHead(200, {'Content-Type': 'text/plain'});
response.write('Hello World');
response.close();
首先我们设置了返回的头信息,也就是请求的状态码
200(亦即是请求成功)和返回的类型 Content-Type 为 Text/Plain。在返回了头信息后就可以使用 response.write() 函数来返回相应的数据到客户端了。
最后必须关闭 response 以告诉服务器所有的相应信息已经发送了,close 方法必须在每个 response 的最后调用。
Ps: 截至最新版 close 已替换为 end 。
最后一行则是在命令行中输出了提示信息,表示服务端已经在 8000 端口进行监听了。
sys.puts('Server running at http://127.0.0.1:8000');
就是这样,寥寥数行代码你就可以建立并运行一个 "Hello World" 服务端来相应所有的请求。