Tôi mới sử dụng Require.js và tôi đang cố gắng thực hiện điều gì đó mà tôi cho là đơn giản nhưng bắt đầu là một nỗi đau.Xác định Không gian tên ứng dụng toàn cầu với Require.js và Backbone
Tôi đang cố gắng xác định không gian tên chung cho ứng dụng Backbone của tôi và tải nó dưới dạng mô-đun. Đây là không gian tên của tôi (main.js):
define(
['jquery',
'underscore',
'backbone',
'GlobalRouter'
],
function($, _, Backbone) {
var App= {
Models: {},
Views: {},
Collections: {},
Routers: {},
init: function() {
new App.Routers.GlobalRouter();
Backbone.history.start();
}
}
return App;
});
và đây là config.js tập tin của tôi:
require.config({
// your configuration key/values here
baseUrl: "js", // generally the same directory as the script used in a data-main attribute for the top level script
paths: {
'jquery' : '//ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min',
'underscore': 'vendor/underscore-min',
'backbone': 'vendor/backbone-min',
'marionette': 'vendor/backbone.marionette',
'main' : 'main'
}, // set up custom paths to libraries, or paths to RequireJS plugins
shim: {
'underscore': {
exports: '_'
},
'backbone': {
deps: ['underscore', 'jquery'],
exports: 'Backbone'
},
'main' : {
deps: ['underscore', 'jquery', 'backbone', 'GlobalRouter'],
exports: 'TEWC'
}
} // used for setting up all Shims (see below for more detail)
});
define([
'jquery',
'underscore',
'backbone',
'main'
],
function($, _, Backbone, App, GlobalRouter) {
console.log(App)
alert('hit ')
$(function() {
App.init();
});
}
);
và cho biện pháp tốt, đây là bộ định tuyến của tôi:
define([
'jquery',
'underscore',
'backbone',
'main'
],
function($, _, Backbone, TEWC) {
TEWC.Routers.GlobalRouter = Backbone.Router.extend({
routes: {
"" : "index",
"documents/:id" : "edit",
"login" : "login"
},
edit: function(id) {
alert('edit')
},
index: function() {
alert('index')
},
login: function() {
alert('login')
}
});
});
Trong quá khứ, tôi đã nhận được một 'ứng dụng là lỗi không xác định'. Bây giờ, tôi nhận được một lỗi thời gian chờ tải sau một vài phút mà nói này:
Uncaught Error: Load timeout for modules: main
Tuy nhiên, cảnh báo không cháy, và main.js dường như không có được nạp, nhưng tôi tin rằng bộ định tuyến không, và nó không bark rằng TEWC là không xác định - vì vậy nó có thể được tải mặc dù nó không có trong tab mạng của tôi?
Đây có lẽ là câu hỏi tân binh - có ai có bất kỳ thông tin chi tiết nào về điều này không?
Nó được kết hợp với TodoMVC của Addy Osmani với xương sống và yêu cầu (https://github.com/addyosmani/todomvc/tree/gh-pages/dependency-examples/backbone_require) tạo nên sự khác biệt! Cảm ơn! – streetlight
đèn đường: bạn có thể cho biết vấn đề chính xác là gì không? Tôi gặp một vấn đề tương tự. –
@JohnEdward, tôi tin rằng tôi đã phải cấu hình main.js theo kiểu AMD, với một hàm xác định và vân vân. Ngoài ra, nó là cực kỳ quan trọng để đảm bảo rằng thứ tự của các tập tin bạn đang xác định cũng phù hợp với thứ tự của sự vật trong các tham số chức năng - Tôi tin rằng đó là chìa khóa. Điều này có giúp ích gì không? – streetlight