2013-07-12 350 views
1

我在require.js中使用backbone.js。我想一个教程,这是我的index.html:骨干未定义

<script src="app/script/libs/require/require.js" data-main="app/script/main" type="text/javascript"></script> 
<script src="app/script/router.js" type="text/javascript"></script> 


<script type='text/javascript'> 
    $(document).ready(function() 
    { 
    var appRouter = new AppRouter(); // Router initialization 
    Backbone.history.start(); // Backbone start 
    }); 
</script> 

这是main.js:

require.config({ 
    urlArgs: "bust=" + (new Date()).getTime(), 
    paths: { 
    jquery: 'libs/jquery/jquery', 
    underscore: 'libs/underscore/underscore', 
    backbone: 'libs/backbone/backbone' 
    } 
}); 
require(["jquery", "underscore", "backbone"], 
    function ($, _, Backbone) { 
    console.log("Test output"); 
    console.log("$: " + typeof $); 
    console.log("_: " + typeof _); 
    console.log("Backbone: " + typeof Backbone); 
    } 
); 

这是我的控制台:

ReferenceError: Backbone is not defined 
[Break On This Error] 
$(document).ready(function() 


ReferenceError: $ is not defined 
[Break On This Error] 
$(document).ready(function() 

Test output 
$: function 
_: function 
Backbone: object 

Require.js是工作,但骨干和jQuery是不确定的,我不知道他们有什么问题。

这是我的文件的结构:

enter image description here 任何想法,请。谢谢

+1

我说你的声明库'require.js' **不是**工作。尝试直接加载'jQuery'和'Backbone',看看是否有效。如果是这样,'require.js'不能正确加载它们。你确定这些文件是你告诉'require.js'去寻找它们吗? – 2013-07-12 02:04:48

+0

@MikeW:我添加了我的文件的结构。 – Nothing

+0

@MikeW如果我直接加载jquery和backbone,它运行良好,但我不知道,我的require.js有什么问题。 – Nothing

回答

1

使用您的设置,只有当它被注入为requireJS模块的依赖项时,才可以使用Backbone,但它在全局名称空间中不可用。还需要在jQuery,Backbone或下划线等每个模块中大部分需要的东西似乎不是最好的主意。只需在requireJS主文件之前将它们加载为脚本标记,并且一切都很好。

如果你想保持你要开始内您的应用程序垫片解决方案main.js文件

require.config({ 
    urlArgs: "bust=" + (new Date()).getTime(), 
    paths: { 
    jquery: 'libs/jquery/jquery', 
    underscore: 'libs/underscore/underscore', 
    backbone: 'libs/backbone/backbone' 
    } 
}); 

require(["jquery", "underscore", "backbone"], 
    function ($, _, Backbone) { 
    console.log("Test output"); 
    console.log("$: " + typeof $); 
    console.log("_: " + typeof _); 
    console.log("Backbone: " + typeof Backbone); 

    $(document).ready(function() { 
     var appRouter = new AppRouter(); // Router initialization 
     Backbone.history.start(); // Backbone start 
    }); 
    } 
); 
+0

我仍然得到这个错误'ReferenceError:Backbone is not defined var AppRouter = Backbone.Router.extend({'。 – Nothing

2

你也应该在shim config

require.config({ 
    urlArgs: "bust=" + (new Date()).getTime(), 
    paths: { 
    jquery: 'libs/jquery/jquery', 
    underscore: 'libs/underscore/underscore', 
    backbone: 'libs/backbone/backbone' 
    }, 
    shim: { 
     'backbone': { 
      deps: ["underscore", "jquery"], 
      exports: "Backbone" 
     }, 
     'underscore': { 
      exports: "_" 
     } 
    } 
}); 
require(["jquery", "underscore", "backbone"], 
    function ($, _, Backbone) { 
    console.log("Test output"); 
    console.log("$: " + typeof $); 
    console.log("_: " + typeof _); 
    console.log("Backbone: " + typeof Backbone); 
    } 
);