tôi đã xác định một cấu hình RequireJs trong đó xác định đường dẫn và shims:RequireJs: Sử dụng tự động load-DEPS với shim
require.config({
// define application bootstrap
deps: ["main"],
// define library shortcuts
paths: {
app: "app"
, jquery: "lib/jquery"
, underscore: "lib/underscore"
, backbone: "lib/backbone"
, bootstrap: "lib/bootstrap"
},
// define library dependencies
shim: {
jquery: {
exports: "$"
},
underscore: {
exports: "_"
},
backbone: {
deps: ["underscore", "jquery"],
exports: "Backbone"
},
bootstrap: {
deps: ['jquery'],
exports: "bootstrap"
},
// main application
app: {
deps: ["backbone"],
exports: "App"
}
}
});
Như bạn thấy người cuối cùng "shim" khai nên làm cho nó có thể truy cập xương sống (và nó DEPS) khi tôi tải Ứng dụng chính (tên miền).
Trên thực tế điều này không làm việc:
require(["app"], function($, _, Backbone, App){
app.router = new Backbone.Router.extend({
// routing and route actions
});
});
Điều gì làm cho tôi tự hỏi là trong "xương sống-boilderplate" -project, Backbone (và DEPS của nó) có sẵn theo cách này: https://github.com/tbranyen/backbone-boilerplate/blob/master/app/main.js
Thậm chí không phải xác định điều này trong hàm.
Vì vậy, tôi đang làm gì sai?
cố gắng loại bỏ '$, _, Backbone' khỏi hàm' require', nơi bạn mở rộng bộ định tuyến. Tôi nghĩ rằng các shims làm việc để họ chỉ xuất khẩu các giá trị toàn cầu mà bạn không cần phải thêm vào bất kỳ cuộc gọi – jakee
Hey, mà hoạt động tuyệt vời :) Tôi thậm chí có thể thả từ khóa "xương sống" trong deps-array của hàm xác định mặc dù điều này không hoạt động trong mọi mô-đun ... Bạn có tạo câu trả lời để tôi có thể đóng câu hỏi không? –
Xong, vui vì tôi có thể giúp! – jakee