歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

node.js 分析hello world的例子

先來看一下上一篇hello world的例子 http://www.linuxidc.com/Linux/2012-02/53534.htm

[javascript]
  1. var http = require('http');  
  2. http.createServer(function (req, res) {  
  3.   res.writeHead(200, {'Content-Type''text/plain'});  
  4.   res.end('Hello World\n');  
  5. }).listen(1337, "127.0.0.1");  
  6. console.log('Server running at http://127.0.0.1:1337/');  

了解javascript的話,代碼基本能看懂,不過代碼中出現的object和function沒有見過.先別急著用搜索引擎,先看一下 http://nodejs.org/  的官方文檔.


點擊 v0.6.5 docs 進入 http://nodejs.org/docs/v0.6.5/api/


文檔已經分好了類,不好直接搜索,還好它有一個 View on single page 的鏈接,點擊以後搜索.


搜索第一個出現的函數 require 它在Globals之下,它是一個全局的 function, 官方說明如下:require() :To require modules. See the Modules section. 查看Modules小節,了解到module 就是node.js的包管理機制,有點類似於python.require('http') 是加載了HTTP module.

發現console 也在Globals之下,它是一個全局的 object, 官方說明如下:console:Used to print to stdout and stderr. See the stdio section. 查看 stdio小節,了解到console就是標准io類似java的systen.out.

按這樣看,其他相關說明應該都在http小節,查看一下,的確如此.

查看http的整個API,包含幾類成員,有 object ,function,property,event. 前三種定義方式,遵照javascript語法,各種javascript基本都一樣,那node.js是這麼定義的,查看Events小節,添加監聽使用如下方式:

emitter.addListener(event, listener) 
emitter.on(event, listener)

[javascript]
  1. server.on('connection'function (stream) {  
  2.   console.log('someone connected!');  
  3. });  


http.createServer 官方說明如下:

http.createServer([requestListener])
Returns a new web server object.
The requestListener is a function which is automatically added to the 'request' event.

Event: 'request'
function (request, response) { }
Emitted each time there is a request. Note that there may be multiple requests per connection (in the case of keep-alive connections). request is an instance of http.ServerRequest and response is an instance ofhttp.ServerResponse

根據以上API可以推算以下兩種代碼是一致的
[javascript]
  1. http.createServer(function (req, res) {  
  2. })  
[javascript]
  1. var server = http.createServer();  
  2. server.on('request',function (req, res){  
  3. })  
修改hello world源代碼,測試結果的卻如此.


hello world中還用到了以下函數:
response.writeHead(statusCode, [reasonPhrase], [headers])
response.end([data], [encoding]) The method, response.end(), MUST be called on each response.

server.listen(port, [hostname], [callback])

通過對hello world 源碼的分析,基本上了解了node.js 的結構,可以看出 node.js是基於事件的JavaScript,可以開發基於事件的Web應用.
下篇講node,js 接收get post請求 http://www.linuxidc.com/Linux/2012-02/53536.htm
Copyright © Linux教程網 All Rights Reserved