Menu
CoddyTech

Module CommonJS

Thuộc phần Kiến thức cơ bản về Node.js trong hành trình Node.js của Coddy. Bài học 10 trên 33.

Phần lớn code Node mà bạn sẽ đọc trong các package npm và hướng dẫn cũ sử dụng một hệ thống module khác.

CommonJS xuất bằng module.exports và nhập bằng require. Một tệp có phần mở rộng .cjs luôn là CommonJS, bất kể phần còn lại của dự án sử dụng gì, và khi import một tệp như vậy, bạn sẽ nhận được đối tượng module.exports của tệp đó làm giá trị mặc định:

// greet.cjs
function hello(name) {
    return 'Hello, ' + name;
}
module.exports = { hello };

// app.js
import greet from './greet.cjs';
console.log(greet.hello('Ada'));

exports ban đầu là cùng một đối tượng với module.exports. exports.hello = hello thêm thuộc tính vào đối tượng đó; exports = { hello } thay thế biến, và bên nhập sẽ nhận được một đối tượng rỗng.

challenge icon

Thử thách

Dễ

Một tệp cũ, legacy/stats.cjs, được viết theo cách CommonJS, với module.exports. Hãy dùng tệp này trong notes.js để thêm lệnh stats.

  1. Trong legacy/stats.cjs, hãy hoàn thành countWords(notes). Hàm này nhận mảng ghi chú và trả về tổng số từ có trong đó, tính trên tất cả ghi chú. Các từ được phân tách bằng dấu cách. Với ba ghi chú ban đầu, Buy milk, Call Ada và Water the plants, hàm trả về 7. Với một mảng rỗng, hàm trả về 0.
  2. Trong notes.js, hãy nhập tệp bằng import stats from './legacy/stats.cjs'. Đây là tệp CommonJS, nên stats là đối tượng module.exports của tệp, còn hàm là stats.countWords.
  3. Thêm lệnh stats vào chuỗi lệnh, trước else cuối cùng. Lệnh này in ra một dòng: số ghi chú, rồi đến số từ.
    3 notes, 7 words
    where và các lệnh khác vẫn hoạt động.

Thử nhé: nhập stats vào ô sau $ node notes.js rồi nhấn Enter. Bạn sẽ thấy 3 notes, 7 words. Sau đó nhập add Buy bread, rồi nhập lại stats: bạn vẫn thấy 3 notes, 7 words, vì kho lưu trữ quên các ghi chú mới khi chương trình kết thúc.

Tự làm thử

// Một module cũ, viết theo kiểu CommonJS.
function countWords(notes) {
    // Trả về tổng số từ trong tất cả ghi chú.
    return 0;
}

module.exports = { countWords };

Tất cả bài học trong Kiến thức cơ bản về Node.js

Tự luyện tập: Playground Express