Node.js – Mô-đun web


Một máy chủ web là gì?

Máy chủ Web là một ứng dụng phần mềm xử lý các yêu cầu HTTP do máy khách HTTP gửi, như trình duyệt web và trả về các trang web theo phản hồi của máy khách. Máy chủ web thường cung cấp các tài liệu html cùng với hình ảnh, biểu định kiểu và tập lệnh.

Hầu hết các máy chủ web đều hỗ trợ các tập lệnh phía máy chủ, sử dụng các ngôn ngữ kịch bản hoặc chuyển hướng tác vụ đến một máy chủ ứng dụng lấy dữ liệu từ cơ sở dữ liệu và thực hiện logic phức tạp, sau đó gửi kết quả đến máy khách HTTP thông qua máy chủ Web.

Máy chủ web Apache là một trong những máy chủ web được sử dụng phổ biến nhất. Nó là một dự án mã nguồn mở.

Kiến trúc ứng dụng web

Một ứng dụng Web thường được chia thành bốn lớp:

Kiến trúc Web

  • Khách hàng – Lớp này bao gồm các trình duyệt web, trình duyệt di động hoặc các ứng dụng có thể thực hiện các yêu cầu HTTP đến máy chủ web.

  • Người phục vụ – Lớp này có máy chủ Web có thể chặn các yêu cầu được thực hiện bởi các máy khách và chuyển cho chúng phản hồi.

  • Việc kinh doanh – Lớp này chứa máy chủ ứng dụng được máy chủ web sử dụng để thực hiện các xử lý cần thiết. Lớp này tương tác với lớp dữ liệu thông qua cơ sở dữ liệu hoặc một số chương trình bên ngoài.

  • Dữ liệu – Lớp này chứa cơ sở dữ liệu hoặc bất kỳ nguồn dữ liệu nào khác.

Tạo máy chủ web bằng Node

Node.js cung cấp một http mô-đun này có thể được sử dụng để tạo một ứng dụng khách HTTP của một máy chủ. Sau đây là cấu trúc tối thiểu của máy chủ HTTP lắng nghe ở cổng 8081.

Tạo tệp js có tên server.js –

Tệp: 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 

Tiếp theo, hãy tạo tệp html sau có tên là index.htm trong cùng thư mục mà bạn đã tạo server.js.

Tệp: index.htm

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

Bây giờ chúng ta hãy chạy server.js để xem kết quả –

$ node server.js

Xác minh đầu ra.

Server running at 

Yêu cầu máy chủ Node.js

Mở index.htm trong bất kỳ trình duyệt nào để xem kết quả sau.

Ứng dụng máy chủ đầu tiên

Xác minh đầu ra ở cuối máy chủ.

Server running at 
Request for /index.htm received.

Tạo ứng dụng khách Web bằng Node

Một ứng dụng khách có thể được tạo bằng cách sử dụng http mô-đun. Hãy kiểm tra ví dụ sau.

Tạo tệp js có tên client.js –

Tệp: client.js

var http = require('http');

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

// 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();

Bây giờ hãy chạy client.js từ một đầu cuối lệnh khác với server.js để xem kết quả:

$ node client.js

Xác minh đầu ra.

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

Xác minh đầu ra ở cuối máy chủ.

Server running at 
Request for /index.htm received.