在这个例子中,Backbone require.js依赖关系在哪里得到解决?

时间:2012-08-27 22:57:21

标签: backbone.js requirejs

在Addy Osmani的forDo MVC示例中,对于require.js + Backbone:https://github.com/addyosmani/todomvc/blob/gh-pages/dependency-examples/backbone_require/js/main.js,他正在使用

Backbone.history.start() // line #31

没有实际需要Backbone。这是如何工作的?垫片能够实现吗?或者我错过了一些明显的东西?

2 个答案:

答案 0 :(得分:3)

如果您查看代码,view/app.js实际上需要Backbone。

骨干垫片正在导出全局 Backbone变量。

如果没有其他模块实际上需要垫片,它将无法加载,因此无法访问。

您可以尝试删除' views / app' main.js中的要求可以自​​己查看。

答案 1 :(得分:0)

正如@ChristiMihai所提到的,Backbone创建了一个全局Backbone对象,正确无误。让我举一个例子,说明我在Require.js / Backbone / Handlebars应用程序中的操作:

首先,我在<head>中包含Require config:

var require_config = {
  baseUrl: "/javascripts",
  waitSeconds: 5,
  paths: {
    'cdnjs': 'http://ajax.cdnjs.com/ajax/libs',
    'aspnetcdn': 'http://ajax.aspnetcdn.com/ajax',
    'cloudflare': 'http://cdnjs.cloudflare.com/ajax/libs',
    'local': '/javascripts'
  }
}

if (typeof require !== 'undefined') {
  require.config(require_config);
} else {
  var require = require_config;
}

之后我引导了一个require模块,例如:

define([
  'app'
],
function() {
  console.log('Homepage module');
  /*

  ... this is the meat of your app...
  you can add other dependencies beside `app` too

  */
});

现在app是主要依赖项,它通过baseUrl解析为/javascripts/app.js并按顺序包含所有必需的deps,如下所示:

define([
  'order!cdnjs/json2/20110223/json2',
  'order!cloudflare/underscore.js/1.3.1/underscore-min',
  'order!cloudflare/backbone.js/0.9.2/backbone-min',
  'order!handlebars/handlebars-1.0.0.beta.6.min',
  'order!lib/ns',
  'bootstrap'
], function(){});