我有一个app-module来加载路由器。该应用程序定义了我需要的模块的依赖项,并将它们放入其匿名函数中。在此功能内部,路由器正在初始化。 如果路由器模块还定义了对Backbone的依赖关系并将其放入其匿名函数中,则Backbone在路由器模块内部不可用。 怎么样?
错误:
这是启动顺序:
这是我的应用:
require.config({
paths: {
jquery: 'jquery',
underscore: 'underscore',
backbone: 'backbone',
mustache: 'mustache',
router: 'router'
},
shim: {
'underscore': ['jquery'],
'backbone': ['underscore'],
'router' : ['backbone'],
'mustache': ['backbone'] }
});
define([
'jquery',
'underscore',
'backbone',
'mustache',
'router'
],
function($, _, Backbone, Mustache, Router) {
var initialize = function(){
console.log("app initialized");
Router.initialize();
};
return { initialize: initialize};
});
我的路由器定义:
define([
'jquery',
'underscore',
'backbone',
'view'
],
function ($,_,Backbone,View) {
console.log("Router defined");
var initialize = function () {
console.log("router initialized");
//Doing stuff on Backbone
};
return { initialize: initialize };
});
如果我在路由器模块中放弃对Backbone的引用,我可以使用它。
编辑:
这是主文件:
require([
'app',
], function(App){
App.initialize();
});
答案 0 :(得分:0)
从日志中可以看出,您的应用程序早于路由器定义。您的main.js
中存在错误,您不应使用define()
,而应使用require()
功能。
require.config({
paths: {
jquery: 'jquery',
underscore: 'underscore',
backbone: 'backbone',
mustache: 'mustache',
router: 'router'
},
shim: {
'underscore': ['jquery'],
'backbone': ['underscore'],
'router' : ['backbone'],
'mustache': ['backbone'] }
});
require([
'router'
],
function(Router) {
console.log("app initialized");
Router.initialize();
});