Backbone.js 主干未定义

Backbone.js 主干未定义,backbone.js,requirejs,Backbone.js,Requirejs,我将backbone.js与require.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"></scrip

我将backbone.js与require.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>
这是我的控制台:

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没有定义,我不知道它们出了什么问题

这是我的文件的结构:


有什么想法吗。感谢

在您的设置中,只有主干作为依赖项注入到requireJS模块中时,您才能使用主干,因为它在全局名称空间中不可用。同时,在大多数模块中需要jquery、主干网或下划线等功能似乎不是最好的主意。只需将它们作为脚本标签加载到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
    });
  }
);

您还应在中声明您的LIB


我想说,
require.js
不起作用。尝试直接加载
jQuery
Backbone
,看看是否有效。如果是这样,
require.js
没有正确加载它们。你确定文件就在你让
require.js
查找它们的地方吗?@MikeW:我添加了我的文件结构。@MikeW如果我直接加载jquery和主干,效果会很好,但我真的不知道,我的require.js有什么问题。这是一幅很好的图片。我猜您为
require.js
设置的路径是错误的。和往常一样,当你遇到问题时,简化。首先从问题中消除
require.js
,然后直接加载库。当它起作用时,请考虑是否需要
require.js
,如果需要,请在彻底检查配置后重新添加它。我更新了require.js的结构,但它仍然不起作用,谢谢。我仍然收到此错误
ReferenceError:Backbone未定义var AppRouter=Backbone.Router.extend({
)。
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
    });
  }
);
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);
  }
);