在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。这是如何工作的?垫片能够实现吗?或者我错过了一些明显的东西?
答案 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(){});