2012-07-08 24 views
5

Tôi không chắc chắn cách tôi sử dụng không gian tên trong môi trường xương sống được mô đun hóa (RequireJs).Làm cách nào để sử dụng không gian tên trong Backbone với RequireJs

Tôi đã suy nghĩ một chút về cách nó có thể trông giống như thế nhưng hoàn toàn không chắc chắn nếu đây là đúng cách.

app.js (nhận được thực hiện bởi main.js)

define('App', ['underscore', 'backbone', 'Router'], function(_, Backbone, Router){ 
    function initialize(){ 
     var app = {}; // app is the global namespace variable, every module exists in app 

     app.router = new Router(); // router gets registered 

     Backbone.history.start(); 
    } 

    return { initialize: initialize } 
}); 

messages.js

define('MessageModel', ['underscore', 'backbone', 'App'], function(_, Backbone, App){ 
    App.Message.Model; // registering the Message namespace with the Model class 

    App.Message.Model = Backbone.Model.extend({ 
     // the backbone stuff 
    }); 

    return App; 
}); 

Đây có phải là cách tiếp cận đúng hay tôi hoàn toàn trên con đường sai (nếu có, hãy sửa tôi!)

Trả lời

5

Hãy xem ví dụ về yêu cầu TODO Backbone + requireJs:

https://github.com/addyosmani/todomvc

+0

Xin chào, tôi đã xem qua mã. Đó là cách tôi sử dụng RequireJs hiện tại nhưng tôi bỏ lỡ các không gian tên (luôn luôn có một biến không có "toàn cục") –

+0

Liên kết không còn hoạt động: (bất kỳ ý tưởng nào để truy xuất tài nguyên đó? – lucke84

+1

http://addyosmani.github.com/todomvc/dependency-examples/backbone_require/ –

1

Tìm thấy một ứng dụng ví dụ thực tế sử dụng không gian tên như đề cập trong bài bắt đầu: https://github.com/nrabinowitz/gapvis

Chỉ cần phải thử nghiệm nó những ngày tiếp theo

1

Tôi mới đến xương sống, nhưng chỉ đọc một đoạn trích từ tài liệu requirejs.

Mô-đun khác với tệp tập lệnh truyền thống ở chỗ nó xác định đối tượng có phạm vi rộng giúp tránh gây ô nhiễm không gian tên chung. Nó có thể liệt kê một cách rõ ràng các phụ thuộc của nó và có được một xử lý trên các phụ thuộc đó mà không cần phải tham chiếu đến các đối tượng chung, mà thay vào đó nhận các phụ thuộc như các đối số cho hàm xác định mô-đun. Các mô-đun trong RequireJS là phần mở rộng của Mô-đun Mô-đun, với lợi ích của việc không cần các hình cầu để tham khảo các mô-đun khác.

Đối với tôi, điều này có vẻ như nếu khi sử dụng requirejs, bạn có thể quên tất cả về không gian tên, như requirejs chăm sóc nó. Bạn sẽ chỉ có quyền truy cập nó một cách khác nhau. Khi bạn muốn truy cập nó từ một mô-đun khác, bạn sẽ đặt một đường dẫn đến tệp trong mảng phụ thuộc của bạn và nạp một biến tương ứng vào hàm sau đây.

define(["folder/a-script", "folder/another-script"], function(AScript, AnotherScript) { 
     // In here the scripts are loaded and can be used, but are called by 
     // their relative name in the anonymous function. 
    } 
); 

Dù sao, có lẽ trong một số trường hợp vẫn còn là một nhu cầu không gian tên gì đó, nhưng tôi nghĩ rằng nói chung, nó có giá trị reading the docs để xem nếu bạn cần.

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