0

我有一个应用程序模块来加载路由器。该应用程序定义了我需要的模块的依赖关系并将它们放入它的匿名函数中。在这个函数中,路由器正在初始化。如果 router-module 还定义了对 Backbone 的依赖并将其放入其匿名函数中,则 Backbone 在 router-module 中不可用。怎么来的?

错误:

在此处输入图像描述

这是引导顺序:

在此处输入图像描述

这是我的应用程序:

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();
});
4

1 回答 1

0

正如您从日志中看到的,您的应用是在 Router 之前定义的。你的 有一个错误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();
});
于 2013-08-27T09:43:36.730 回答