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.
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.
- Trong
legacy/stats.cjs, hãy hoàn thànhcountWords(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 AdavàWater the plants, hàm trả về7. Với một mảng rỗng, hàm trả về0. - Trong
notes.js, hãy nhập tệp bằngimport stats from './legacy/stats.cjs'. Đây là tệp CommonJS, nênstatslà đối tượngmodule.exportscủa tệp, còn hàm làstats.countWords. - Thêm lệnh
statsvào chuỗi lệnh, trướcelsecuối cùng. Lệnh này in ra một dòng: số ghi chú, rồi đến số từ.3 notes, 7 wordswherevà 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
1Chạy JavaScript trên Node
Xin chào, NodeĐọc lệnhĐối số dòng lệnhCác lệnhTự luyện tập: Playground Express