module.exports và exports trong NodeJS khác nhau như thế nào?
Bài viết được sự cho phép của tác giả Trần Khôi Nguyên Hoàng
Chú ý
exports
và module.exports
chứ không phải là export nhé các bạn. Nhiều bạn hay viết thiếu chữ “s” lắm ấy. Trong Javascript thì có cái từ khóa export
nhưng trong NodeJS thì chưa đâu.
Cơ chế Wrapping của NodeJS là gì?
Trước khi một đoạn code trong module được thực thi thì NodeJS sẽ wrap code lại như sau:
module.exports và exports khác nhau như thế nào?
Trước hết thì
module.exports
vàexports
trỏ tới cùng một Object, là một Object rỗng.
Tuy nhiên, chỉ có một thằng module.exports
là cái thật sự được export khi mình require nó thôi. Còn thằng exports
thì không phải. Nó chỉ là một reference tới thằng module.exports
thôi.
Ví dụ như sau:
Kết quả sẽ là
Ở đây có thể thấy hai thằng này chỉ thay đổi cái properties của cái Object ban đầu (là Object rỗng ban đầu). Nên ở đây, hai thằng này vẫn là cùng một Object.
Tuy nhiên, nếu như sửa lại
Hai thằng này là hai cái Object khác nhau, vì mình là assign lại giá trị cho thằng exports
(Mình dùng dấu =).Kết quả sẽ là
Mình chứng minh thêm như sau:
Trong file export.js
minhf viết
Sau đó, trong file index.js
mình viết
Thì kết quả là {}
Vì chỉ là thằng module.exports
mới là thằng thật sự được export (Và mặc định nó là một Object rỗng). Còn thằng exports
thì không.
Vậy thì khi nào sử dụng thằng exports?
Dùng thằng exports
chỉ khi nào mình muốn add thêm một cái properties vào cái Object mặc định của nó. Ví dụ như thay vì viết
Thì có thể viết thành như sau cho nó ngắn và tiện hơn.
Kết luận
Luôn sử dụng module.exports
khi muốn export một cái gì đó. Đừng lăn tăn sử dụng exports
là gì cho rối rắm hết cả lên.
Bài viết gốc được đăng tải tại htknguyen.com
Xem thêm việc làm NodeJS hấp dẫn trên TopDev
- B BenQ RD Series – Dòng Màn Hình Lập Trình 4k+ Đầu Tiên Trên Thế Giới
- i iOS 18 có gì mới? Có nên cập nhật iOS 18 cho iPhone của bạn?
- G Gamma AI là gì? Cách tạo slide chuyên nghiệp chỉ trong vài phút
- P Power BI là gì? Vì sao doanh nghiệp nên sử dụng PBI?
- K KICC HCMC x TOPDEV – Bước đệm nâng tầm sự nghiệp cho nhân tài IT Việt Nam
- T Trello là gì? Cách sử dụng Trello để quản lý công việc
- T TOP 10 SỰ KIỆN CÔNG NGHỆ THƯỜNG NIÊN KHÔNG NÊN BỎ LỠ
- T Tìm hiểu Laptop AI – So sánh Laptop AI với Laptop thường
- M MySQL vs MS SQL Server: Phân biệt hai RDBMS phổ biến nhất
- S SearchGPT là gì? Công cụ tìm kiếm mới có thể đánh bại Google?