Hướng dẫn require nodejs

Node.js sử dụng CommonJS để triển khai hệ thống module và require là lệnh để yêu cầu sử dụng một module trong một file xác định. Chức năng cơ bản của require đó là nó sẽ đọc một file, thực thi và sau đó trả lại các đối tượng được exports. Ví dụ một module như sau:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
console.log["example.js"];

const invisible = function [] {
  console.log["invisible"];
}

exports.message = "hi";

exports.say = function [] {
  console.log[exports.message];
}

Khi đó:

1
2
var example = require['./example.js']
console.log[example];

Chúng ta sẽ thấy kết quả như là:

1
2
3
4
5
example.js
{
  message: "hi",
  say: [Function]
}

Hoặc chúng ta cũng có thể sử dụng module.exports để exports ra một hàm hoặc một đối tượng mới.

Ví dụ:

1
2
3
module.exports = function [] {
  console.log["hello world"];
}

Khi đó

1
require['./example2.js'][]; // return "hello world"

Một điều cần lưu ý là mỗi lần require một tệp đã được require trước đó, các đối tượng được exports sẽ được lưu vào bộ nhớ đệm [cache] và sử dụng lại.

Ví dụ:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
node> require['./example.js']
example.js
{ message: 'hi', say: [Function] }
node> require['./example.js']
{ message: 'hi', say: [Function] }
node> require['./example.js'].message = "hey" // gán message thành "hey"
'hey'
node> require['./example.js'] // lúc này chúng ta sẽ nghĩ require giống như là yêu cầu require mới lại file...
example.js
{ message: 'hey', say: [Function] } // nhưng kết quả message đã bị gán thành "hey"

Như các bạn có thể thấy ở trên, example.js được require một lần duy nhất, sau đó tất cả các lệnh gọi require tiếp theo sẽ chỉ lấy ra trong bộ nhớ đệm, thay vì đọc lại tệp. Điều này đôi khi có thể tạo ra một số trường hợp không mong muốn như ở ví dụ trên khi chúng ta vô tình thay đổi các thuộc tính.

Các quy tắc về require có thể hơi phức tạp, nhưng có một số quy tắc chung đơn giản như là nếu tệp không bắt đầu bằng “./” hoặc “/”, thì nó được coi là built-in module [core], hoặc là một phần phụ thuộc trong thư mục node_modules. Nếu tệp bắt đầu bằng “./” thì nó được coi là tệp với đường dẫn tương đối. Nếu tệp bắt đầu bằng “/”, nó được coi là tệp với đường dẫn tuyệt đối.

Lưu ý: có thể bỏ qua đuôi “.js”, require sẽ tự động thêm vào nếu cần.

Ngoài ra, nếu chúng ta require chỉ đến cấp thư mục nó sẽ tự động tìm file index.js, nếu không có sẽ gây ra một lỗi module không tồn tại.

Ngày hôm nay chúng ta sẽ đi vào tìm hiểu module and require và cách thêm, sửa, xoá... file trong Nodejs và cách áp dụng chúng vào trong quá trình dự án phát triển website nha.

Nếu bạn muốn xem lại bài 2 thì truy cập ở đây nha.

Module Và Require Trong Nodejs

Module là một chức năng giúp bạn có thể dễ dàng chia file javascript phức tạp thành các file nhỏ hơn để từ đó thuận lợi trong việc sử dụng lại [reusable code] cũng như duy trì[maintain] dự án được dễ dàng hơn.

Để giúp bạn dễ hiểu hơn thì bay giờ chúng ta sẽ đi vào tìm hiểu ví dụ thực tế nha. Đầu tiên mình sẽ tạo hai file js có tên là app.jscar.js như hình ảnh sau nhé!

Bây giờ mình sẽ sử dụng module và require để lấy dữ liệu trong car.js sau đó sử dụng lại cho app.js thông qua đoạn mã sau:

File car.js

 const car = ['bmw', 'audi', 'toyota'];
module.exports = car;

File app.js

 const car = require['./car'];
console.log[car];

Và bây giờ bạn xem video kết quả bên dưới nhé!

Tiếp theo mình sẽ hướng dẫn bạn cách để có thể export hai hay nhiều object trong module thông qua ví dụ dưới đây nhé! Đầu tiên chúng ta sẽ thêm một mảng có tên là price dùng để chứa các giá tiền trong file car.js:

File car.js

 const car = ['bmw', 'audi', 'toyota'];
const price = [10000, 15000, 8000];
module.exports = { car, price };

File app.js

 const {car, price} = require['./car'];
console.log[car];
console.log[price];

Và bây giờ chúng ta sẽ cùng nhau xem kết quả nhé!

File System Nodejs

Trong phần này mình sẽ hướng dẫn bạn cách để có thể tương tác với các file trong máy tính như đọc, xoá, tạo mới... bằng javascript nhé!

Đọc File

Đầu tiên mình sẽ tạo một file doc.txt dùng để luu trữ văn bản.

Tiếp theo để tương tác với file trong máy tính trong Node thì chúng ta cần import module fs trong file app.js.

Bây giờ mình sẽ sử dụng phương thức readFile trong fs để đọc file doc.txt thông qua đoạn code sau nhé:

const fs = require['fs'];
fs.readFile['./doc.txt', [err, data] => {
    if[err] {
        console.log[err];
    } else {
        console.log[data.toString[]];
    }
}]

Và bây giờ chúng ta sẽ chạy chương trình và xem kết quả nha.

Write File

Trong phần này chúng ta sẽ đi vào sử dụng writeFile để tạo một File mới trong máy tính thông qua đoạn code sau nhé:

fs.writeFile['./doc2.txt', 'Hello Niem vui lap trinh 2', [] => {
    console.log['File was written']
}]

Ở đây mình xin giải thích một số điểm cần chú ý là :

  • ./doc2.txt: là tên và đường dẫn chứa thư mục của file chúng ta cần tạo.
  • Hello Niem vui lap trinh 2: lnội dung trong file.

Bây giờ chúng ta đi vào xem kết quả nha.

Delete File

Để xoá một file trong Nodejs thì chúng ta sẽ sử dụng câu lệnh unlink. Và để dễ hình dung thì bạn xem đoạn mã bên dưới nha.

if[fs.existsSync['./doc2.txt']] {
  fs.unlink['./doc2.txt', [err] => {
    if[err]{
      console.log[err];
    } else{
      console.log['File was delete']
    }
  }]
}

Mình xin giải thích một số điểm là:

  • fs.existsSync: Dùng để kiểm tra File có tồn tại hay chưa.
  • Nếu tồn tại thì sẽ xoá file bằng lệnh unlink. Ngược lại thì sẽ hiển ra lỗi.

Tổng kết:

Qua đây mình mong bài viết sẽ cung cấp thêm cho bạn những kiến thức về rmodule and require và cách thêm, sửa, xoá... file trong Nodejs hữu ích cho việc phát triển, thiết kế web và nếu có thắc mắc gì cứ gửi email mình sẽ phản hồi sớm nhất có thể. Rất mong bạn tiếp tục ủng hộ trang web để mình có thể viết nhiều bài hay hơn nữa nhé. Chúc bạn có một ngày vui vẻ!

Chủ Đề