Phần 2: Tạo Modules trong Node.JS

 

Các phần trước:

Phần 1: Biến, Hàm, Kiểu dữ liệu trong Node.JS

Lập trình Node.js thực hành tiếp cận với môi trường thực tế từ A-Z & làm chủ kiến thức cơ bản về Node.js.

Module là gì?

Node.js sử dụng Module để đơn giản hóa việc tạo ra các ứng dụng phức tạp. Module là giống như các thư viện trong PHP, C, C#,… Mỗi module chứa một tập các hàm chức năng có liên quan đến một đối tượng của Module qua đó giúp việc viết và quản lý mã lệnh của chương trình được dễ dàng hơn. Một module có thể đơn giản là một hàm hay một đối tượng. Mỗi module thường được khai bảo ở một tập tin riêng rẽ.

Để tạo một module, chúng ta dùng phương exports() của đối tương module. 

Ví dụ, chúng ta có một file hello.js như sau:

module.exports = {
    sayHelloInEnglish: function() {
      console.log("HELLO");
    },
  
    sayHelloInGerman: function() {
      console.log("HALLO");
    }
};

 

Để chạy ứng dụng trên, chúng ta tạo một file mới main.js:

// Để tải module, chúng ta dùng phương thức require("đường dẫn file")
var myModule = require("./hello.js");

myModule.sayHelloInEnglish();
myModule.sayHelloInGerman();

//Kết quả
//HELLO
//HALLO

 

 

HTTP Module

Node.JS có một module có sẵn tên là http, module này cho phép Node.js truyền dữ liệu đến Web server.

Ví dụ, chúng ta có một file server.js như sau:

var http = require('http'); // Tải module http

//Tạo một server mới
http.createServer((request, response) => { 
    
    // 1. Viết nội dung hiển thị trên trình duyệt
    response.write('Hello, World!');

    // 2. Kết thúc quá trình
    response.end(); 
}).listen(1337); // 3. Nội dung được truyền đến cổng 1337 

Gọi file server.js

$ node server.js

Kết quả trên trình duyêt: http://localhost:1337

 

Nếu nội dung hiển thị trên trình duyệt ở dang HTML, bạn nên sử dụng thêm phương thức res.writeHead( 200, , {'Content-Type': 'text/html'});

var http = require('http');
http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/html'});
  //200 có nghĩa là mọi thứ đều OK
  //{'Content-Type': 'text/html'}: Kiểu dữ liệu trả về

  res.write('Hello World!');
  res.end();
}).listen(1337);