Backbone&Underscore是未定义的,加载思想

Mar*_*var 2 javascript backbone.js underscore.js

我目前正在尝试学习BackboneJS以及随之而来的东西,但我无法真正实现它的功能.我的问题是,一旦我尝试使用Backbone对象,我就遇到了麻烦.所以我试着记录下这两个,给予.

undefined main.js:23
undefined main.js:24
Run Code Online (Sandbox Code Playgroud)

代码如下.

// RequireJS configuration.
require.config({
  paths: {
    // Major dependecies.
    jquery: 'libs/jquery/jquery-1.8.3.min',
    underscore: 'libs/underscore/underscore-min',
    backbone: 'libs/backbone/backbone-min',

    // Template dir.
    templates: '../templates'
  },

  // Append query string, to avoid browser caching, while in dev.
  urlArgs: "bust=" +  (new Date()).getTime()
});

// Start application.
require([
  'underscore',
  'backbone'
//  'router'
], function(_, backbone) {
  console.log(backbone);
  console.log(_);
//  Router.initialize();
});
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,我试图在我的路由器中使用Backbone对象,但不成功.然后我尝试了我的main.js,同样的事情.

gre*_*ala 6

您需要使用require Shim作为Backbone而Underscore不支持AMD开箱即用.

需要填充程序允许您加载非AMD模块(请参阅此处).请注意,该exports对象是将用作模块的对象的名称.

paths: {
      // Major dependecies.
      jquery: 'libs/jquery/jquery-1.8.3.min',
      underscore: 'libs/underscore/underscore-min',
      backbone: 'libs/backbone/backbone-min',

      // Template dir.
      templates: '../templates'
},
shim: {
    backbone: {
        deps: ["underscore", "jquery"],
        exports: "Backbone"
    },

    underscore: {
        exports: "_"
    }
}
Run Code Online (Sandbox Code Playgroud)

另一种方法是将脚本直接包含在HTML中.

<script src="libs/jquery/jquery.js"></script>
<script src="libs/underscore/underscore.js"></script>
<script src="libs/backbone/backbone.js"></script>
Run Code Online (Sandbox Code Playgroud)