Các tính chất của Module Pattern
- Dựa trên Closure và HOF (Hight Order Function), IIFE (hàm được chạy ngay lập tức).
- Dùng để khởi tạo một Object giấu dữ liệu không thể truy xuất từ bên ngoài (private data).
- Có thể phát triển thành Revealing Module Pattern.
- Tính đóng gói dữ liệu (Encapsulation).
https://viblo.asia/p/closures-iifes-module-pattern-trong-javascript-4P856jYG5Y3
Ví dụ về Module Pattern
IIFE (Immediately Invoked Function Expression)
(function helloModulePattern(name) {
console.log(`module pattern chào ${name}`) // print console: module pattern chào viblo
})('viblo')
Câu lệnh trên được gọi là IIFE (Immediately Invoked Function Expression) sẽ được khởi tạo và thực thi ngay lập tức, nó không giống như một function bình thường ở ví dụ bên dưới khi chúng ta gọi nó mới được thực thi cùng xem ví dụ về một function không phải là một IIFE.
function helloFunction(name) {
console.log(`function chào ${name}`) // print console: function chào viblo
}
helloFunction('viblo')
Tóm lại:
- Function đầu tiên được khởi tạo và thực thi ngay lập tức.
- Function thứ 2 nếu ta không gọi helloFunction(‘viblo’) thì nó sẽ không được thực thi mà chỉ được khởi tạo.
Ví dụ chi tiết về Module Pattern
Tham khảo:
- Closures, IIFEs, module pattern trong Javascript
- Module Pattern trong Javascript
- What is AMD, CommonJS, and UMD?
- What are CJS, AMD, UMD, and ESM in Javascript?
- The Evolution of JavaScript Module Patterns
- ES6 - Từ cơ bản tới nâng cao (Phần 3)
- Cách mà Google & Amazon quét sạch hàng ngàn JS developers xấu số chỉ bởi 1 câu interview đơn giản!
- Cách viết JavaScript hiện đại: Phần 2: CommonJS module
- JavaScript modules
- Sử dụng RequireJS và AMD để module hóa code JavaScript
- Sử dụng RequireJS và AMD để module hóa code JavaScript
- Tìm hiểu về module system, CommonJS và require