JavaScript modules là các mẫu thiết kế được sử dụng phổ biến nhất để giữ các đoạn mã cụ thể độc lập với các thành phần khác. Điều này cung cấp khớp nối lỏng để hỗ trợ mã có cấu trúc tốt.
Modules phải là Immediately-Invoked-Function-Expressions (IIFE) để cho phép các private scopes - nghĩa là, một closure bảo vệ các biến và phương thức (tuy nhiên, nó sẽ trả về một đối tượng thay vì một hàm). Nó trông giống như ví dụ dưới đây:
(function() {
// declare private variables and/or functions
return {
// declare public variables and/or functions
}
})();
Ở đây chúng ta khởi tạo các biến private và/hoặc các hàm trước khi trả về đối tượng mà chúng ta muốn trả về. Mã bên ngoài closure của chúng ta không thể truy cập các biến riêng tư này vì nó không nằm trong cùng scope.