2010-04-27 36 views
18

Tôi quan tâm đến việc sử dụng Mẫu Mô-đun để tổ chức tốt hơn các dự án trong tương lai của tôi. Thật không may, chỉ có một vài hướng dẫn ngắn gọn và ví dụ về khái niệm chứng minh của Mô-đun Mô-đun.Sử dụng Mẫu Mô-đun cho các dự án lớn hơn

Sử dụng mô hình mô-đun, tôi muốn tổ chức các dự án vào loại cấu trúc này:

project.arm.object.method(); 

đâu "Dự án" là tên dự án toàn cầu của tôi, "cánh tay" là một tiểu mục hoặc chi nhánh của dự án, "đối tượng" là một đối tượng riêng lẻ, v.v. với các phương thức và thuộc tính.

Tuy nhiên, tôi không chắc mình nên khai báo và tổ chức nhiều "vũ khí" và "đối tượng" trong "dự án" như thế nào.

var project = window.project || {}; 
project.arm = project.arm || {}; 

project.arm.object = (function() { 

    var privateVar = "Private contents."; 

    function privateMethod() { 
     alert(privateVar); 
    } 

    return { 
     method: privateMethod 
    }; 

}()); 

Có thực tiễn hay quy ước nào tốt nhất khi xác định cấu trúc mô-đun phức tạp không? Tôi có nên tuyên bố một cánh tay/đối tượng mới bên dưới cái cuối cùng không?

Trả lời

2

Có rất nhiều sắc thái về cách mọi người thích làm điều đó, nhưng lợi ích chính của thứ bạn gọi là mô-đun mô-đun (phạm vi được đặt tên), là không làm lộn xộn không gian tên chung giữ mọi thứ sạch sẽ nếu bạn mang theo các thư viện khác, v.v. và tránh các xung đột tên.

Cách bạn sắp xếp tên và phạm vi lồng nhau trong đó phần lớn là vấn đề sở thích cá nhân.

3

Dojo của dojo.declare là rất tốt cho loại điều vì nó

Tạo một constructor sử dụng một ký hiệu nhỏ gọn cho các thừa kế và mở rộng nguyên mẫu.

Nó cũng thực sự thuận tiện nếu ngay cả đối với chỉ cần loại bỏ loại tấm nồi hơi:

var project = window.project || {}; 
project.arm = project.arm || {}; 

Nếu bạn chỉ muốn tính năng này, sau đó bạn có thể sử dụng dojo.setObject, nhưng dĩ nhiên, viết một cái gì đó để làm tương tự là tầm thường.

dojo.setObject("project.arm.object" (function() { 
    var privateVar = "Private contents."; 

    function privateMethod() { 
     alert(privateVar); 
    } 

    return { 
     method: privateMethod 
    }; 
}())); 

Gần đây tôi sử dụng dojo.declare/dojo.setObject cho một dự án hoạt Javascript lớn (86 tác phẩm, 7K + dòng (không đếm ý kiến ​​và dòng trống)), và đó là một làn gió để giữ mọi thứ có tổ chức và quản lý, đặc biệt là khi bạn có một cơ chế bao gồm như dojo.requiredojo.provide.

Các vấn đề liên quan