Tôi nghĩ rằng tôi sẽ mở rộng câu trả lời ở trên bằng cách nói về cách bạn kết hợp các mô-đun với nhau vào một ứng dụng. Tôi đã đọc về điều này trong cuốn sách crockford doug nhưng chưa quen với javascript, tất cả vẫn còn một chút bí ẩn.
Tôi đến từ nền tảng ac # vì vậy đã thêm một số thuật ngữ tôi thấy hữu ích từ đó.
Html
Bạn sẽ có một số tệp html cấp cao nhất. Nó giúp nghĩ về điều này như tập tin dự án của bạn. Mọi tệp javascript bạn thêm vào dự án đều muốn đi vào điều này, thật không may là bạn không nhận được hỗ trợ công cụ cho việc này (Tôi đang sử dụng IDEA).
Bạn cần thêm tệp vào dự án với các thẻ script như thế này:
<script type="text/javascript" src="app/native/MasterFile.js" /></script>
<script type="text/javascript" src="app/native/SomeComponent.js" /></script>
Nó xuất hiện làm sập các thẻ khiến mọi thứ thất bại - trong khi có vẻ như xml thực sự là một thứ gì đó với các quy tắc điên rồ hơn!
Không gian tên tập tin
MasterFile.js
myAppNamespace = {};
đó là nó. Đây chỉ là để thêm một biến toàn cục duy nhất cho phần còn lại của mã của chúng tôi. Bạn cũng có thể khai báo các không gian tên lồng nhau ở đây (hoặc trong các tệp của riêng họ).
Mô-đun
Một sốComponent.js
myAppNamespace.messageCounter= (function(){
var privateState = 0;
var incrementCount = function () {
privateState += 1;
};
return function (message) {
incrementCount();
//TODO something with the message!
}
})();
Những gì chúng ta đang làm ở đây là gán một hàm đếm tin nhắn cho một biến trong ứng dụng của chúng ta. Đây là một hàm trả về một hàm mà chúng ta thực thi ngay lập tức .
Các khái niệm
Tôi nghĩ rằng nó giúp nghĩ về dòng trên cùng trong Một số thành phần là không gian tên nơi bạn đang khai báo một cái gì đó. Nhắc nhở duy nhất cho điều này là tất cả các không gian tên của bạn cần xuất hiện trong một số tệp khác trước - chúng chỉ là các đối tượng được bắt nguồn từ biến ứng dụng của chúng tôi.
Hiện tại tôi chỉ thực hiện các bước nhỏ với điều này (tôi đang cấu trúc lại một số javascript bình thường từ một ứng dụng extjs để tôi có thể kiểm tra nó) nhưng có vẻ khá hay vì bạn có thể xác định các đơn vị chức năng nhỏ trong khi tránh được vũng lầy của 'điều này ' .
Bạn cũng có thể sử dụng kiểu này để xác định các hàm tạo bằng cách trả về một hàm trả về một đối tượng có một tập hợp các hàm và không gọi nó ngay lập tức.