Hướng dẫn module.exports trong nodejs
Bài viết được sự cho phép của tác giả Trần Khôi Nguyên Hoàng Trước khi một đoạn code trong module được
thực thi thì NodeJS sẽ wrap code lại như sau:
Tuy nhiên, chỉ có một thằng 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 Mình chứng minh thêm như sau: Trong file Sau đó, trong file Thì kết quả là Vì chỉ là thằng Vậy thì khi nào sử dụng thằng exports?Dùng thằng Thì có thể viết thành như sau cho nó ngắn và tiện hơn. Kết luậnLuôn sử dụng 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 Node là framework hỗ trợ run JS code ở bên server. Để hỗ trợ nhiều hơn trong việc object hóa, Nodejs sử dụng 3 keywork đó là:
3 từ khóa tên được sử dụng rất nhiều trong nodejs, mục đích của 3 từ khóa trên là để việc object hóa một file trong javascript
1. Module.exportsĐầu tiên chung ta phải biết 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ẽ. Ví dụ, http là Module chứa các hàm cụ thể liên quan đến thiết lập HTTP. Node.js cung cấp một vài các Module core kèm theo để hỗ trợ chúng ta truy cập file trên hệ thống, tạo các máy chủ HTTP, TCP/UDP, và các hàm tiện ích nhỏ hữu dụng khác. Ví dụ chúng ta tạo ra một file là greetings.js và nó chứa hai chức năng sau:
Exporting a moduleModule là các đoạn code được đóng gói lại với nhau,... Code trong một Module thường là private – nghĩa là các hàm, biến được định nghĩa và truy cập bởi bên trong của Module. Để "chìa ra" các hàm hoặc biến để sử dụng bên ngoài Module bạn cần sử dụng exports.
2. ExportsCâu hỏi: Đã có module.exports rồi và khi require một file ta cũng chỉ nhận lại được object module.exports vậy thế exports sinh ra với mục đích gì? => Trả lời em cũng không hiểu tại sao nó lại đẻ ra 2 object(cùng trỏ vào 1 vùng nhớ) trong khi đó chỉ cần return về duy nhất object là module.exports. Chú ý khi sử dụng 2 biến module.exports và exports
ví dụ:
=> Kết quả nhận về chỉ hàm getName được add bởi module.exports.getName = getName; lúc này exports đã trỏ đến một nới hoàn toàn mới k còn liên quan gì đến module.exports Và kết quả ta nhận về khi require cũng chỉ là những thành phần mà object module.exports trỏ tới 3. RequireĐể sử dụng Module, bạn đơn giản chỉ cần khai báo với hàm require(), như sau: ví dụ:
require() là hàm trả về tham chiếu tới một Module cụ thể. Trong trường hợp của đoạn mã trên, chúng ta đang khai báo một tham chiếu tới http Module và lưu nó vào biến http. Trong đoạn mã trên, chúng truyền một tham số là tên của Module. Điều này báo cho Node sẽ tìm một Module tên là http trong thư mục node_modules của ứng dụng. Nếu nó không thấy, Node sẽ tiếp tục tìm Module đó ở thư mục global cài đặt node. Bạn cũng có thể chỉ rõ file bằng việc truyền vào tham số là đường dẫn tương đối ./path/to/my/module.js hoặc tuyệt đối /path/to/my/module.js.
Vậy để làm việc với ví dụ "sayHello" ở trên, ta tạo 1 file main.js mà thêm vào dòng code như dưới:
Như vậy là ta có thể gọi 2 hàm sayHello ở file main.js bằng cách inport module greetings.js. Hy vọng bài viết này sẽ giúp các bạn hiểu về require, exports, module.exports để sử dụng modules trong Nodejs. Hẹn gặp lại các bạn ở các bài viết tiếp theo. Tham khảo:
|