鍍金池/ 教程/ HTML/ Node.js Web模塊
Node.js快速入門
Node.js事件發(fā)射器
Node.js包(JXcore)
Node.js事件循環(huán)
Node.js文件系統(tǒng)
Node.js npm
Node.js安裝和入門
Node.js工具模塊
Node.js回調(diào)概念
Node.js流
Node.js入門實(shí)例程序
Node.js教程
Node.js規(guī)范化應(yīng)用
Node.js REPL終端
Node.js緩沖器
Node.js RESTful API
Node.js全局對(duì)象
Linux安裝Node.js(源碼編譯安裝)
Node.js Web模塊
Node.js Express框架

Node.js Web模塊

什么是Web服務(wù)器?

Web服務(wù)器是處理由HTTP客戶端發(fā)送的,如web瀏覽器的HTTP請(qǐng)求的軟件應(yīng)用程序,并返回響應(yīng)于客戶端網(wǎng)頁. Web服務(wù)器通常伴隨著圖片,樣式表和腳本的HTML文檔。

大多數(shù)Web服務(wù)器支持服務(wù)器端腳本使用腳本語言或重定向到其執(zhí)行從數(shù)據(jù)庫中獲取數(shù)據(jù)的特定任務(wù)的應(yīng)用程序服務(wù)器,執(zhí)行復(fù)雜的邏輯等。然后通過Web服務(wù)器發(fā)送結(jié)果到HTTP客戶端。

Apache web服務(wù)器是最常用的網(wǎng)絡(luò)服務(wù)器中的一個(gè)。它是一個(gè)開源項(xiàng)目。

Web應(yīng)用程序體系結(jié)構(gòu)

Web應(yīng)用程序通常分為四個(gè)層次:

Web Architecture
  • Client - 此層由Web瀏覽器,移動(dòng)瀏覽器或應(yīng)用程序,可以使HTTP請(qǐng)求到萬維網(wǎng)服務(wù)器。

  • Server - 這一層包括可攔截的要求由客戶通過Web服務(wù)器響應(yīng)。

  • Business - 此層利用Web服務(wù)器執(zhí)行所需的處理的應(yīng)用程序服務(wù)器。這層交互以經(jīng)由數(shù)據(jù)的基礎(chǔ)上或一些外部程序數(shù)據(jù)層。

  • Data - 此層由數(shù)據(jù)庫或任何的數(shù)據(jù)來源。

使用Node創(chuàng)建Web服務(wù)器

Node.js提供了可以用于創(chuàng)建任何HTTP服務(wù)器的客戶端的HTTP模塊。以下是HTTP服務(wù)器的最低限度的結(jié)構(gòu),它會(huì)在8081端口偵聽。

創(chuàng)建一個(gè)js文件名為server.js:

File: server.js

var http = require('http');
var fs = require('fs');
var url = require('url');


// Create a server
http.createServer( function (request, response) {  
   // Parse the request containing file name
   var pathname = url.parse(request.url).pathname;
   
   // Print the name of the file for which request is made.
   console.log("Request for " + pathname + " received.");
   
   // Read the requested file content from file system
   fs.readFile(pathname.substr(1), function (err, data) {
      if (err) {
         console.log(err);
         // HTTP Status: 404 : NOT FOUND
         // Content Type: text/plain
         response.writeHead(404, {'Content-Type': 'text/html'});
      }else{	
         //Page found	  
         // HTTP Status: 200 : OK
         // Content Type: text/plain
         response.writeHead(200, {'Content-Type': 'text/html'});	
         
         // Write the content of the file to response body
         response.write(data.toString());		
      }
      // Send the response body 
      response.end();
   });   
}).listen(8081);

// Console will print the message
console.log('Server running at http://127.0.0.1:8081/');

接下來,讓我們創(chuàng)建以下名為index.html的HTML文件在創(chuàng)建server.js的同一目錄下

File: index.html

<html>
<head>
<title>Sample Page</title>
</head>
<body>
Hello World!
</body>
</html>

現(xiàn)在讓我們運(yùn)行server.js看到的結(jié)果:

$ node server.js

驗(yàn)證輸出

Server running at http://127.0.0.1:8081/

請(qǐng)求Node.js服務(wù)器

在任何瀏覽器中打開http://127.0.0.1:8081/index.html,看看下面的結(jié)果。

First Server Application

驗(yàn)證服務(wù)器端輸出。

Server running at http://127.0.0.1:8081/
Request for /index.html received.

使用Node創(chuàng)建Web客戶端

Web客戶端可以使用HTTP模塊創(chuàng)建。讓我們來看看下面的例子。

創(chuàng)建一個(gè)js文件名為client.js:

File: client.js

var http = require('http');

// Options to be used by request 
var options = {
   host: 'localhost',
   port: '8081',
   path: '/index.html'  
};

// Callback function is used to deal with response
var callback = function(response){
   // Continuously update stream with data
   var body = '';
   response.on('data', function(data) {
      body += data;
   });
   
   response.on('end', function() {
      // Data received completely.
      console.log(body);
   });
}
// Make a request to the server
var req = http.request(options, callback);
req.end();

現(xiàn)在運(yùn)行不同的命令終端運(yùn)行client.js看到結(jié)果

$ node client.js
            
上一篇:Node.js安裝和入門下一篇:Node.js教程