在路由器文件中添加Backstack作为测试应用程序的模块时,会抛出错误404 loading backbone.js
我无法弄清楚原因是什么,但是添加了额外的http get,请求js / Backbone.js然后抛出404,因为我在js / libs文件夹中只有我的lib。
可能是什么问题?
// index.html
<!DOCTYPE html>
<html>
<head>
<title>Starting Require</title>
<meta name="viewport" content="width=device-width, minimum-scale=1.0, maximum-scale=1.0"/>
<script data-main="js/main" src="js/libs/require.js"></script>
</head>
<body>
<div id="content">
</div>
</body>
// main.js
requirejs.config({
paths : {
'jquery' : 'libs/jquery-1.8.2.min',
'underscore' : 'libs/underscore',
'backbone' : 'libs/backbone',
'backstack' : 'https://github.com/pwalczyszyn/backstack/blob/master/backstack'
},
shim: {
'backbone': {
deps: ['underscore', 'jquery'],
exports: 'Backbone'
},
'backstack': {
deps: ['backbone', 'underscore', 'jquery'],
},
'underscore': {
exports: '_'
}
}
});
require([
'app',
], function(App){
App.initialize();
});
// app.js
define([
'jquery',
'underscore',
'backbone',
'router'
], function($, _, Backbone, Router){
var initialize = function(){
Router.initialize();
};
return {
initialize: initialize
};
});
// router.js
define([
'jquery',
'underscore',
'backbone',
'backstack'
], function($, _, Backbone, Backstack) {
var AppRouter = Backbone.Router.extend({
routes: {
'': 'welcome'
}
});
var initialize = function(){
var app_router = new AppRouter;
app_router.on('route:welcome', function(){
$('#content').html('Hello World!');
});
};
return {
initialize: initialize
};
});
答案 0 :(得分:1)
backstack uses the Backbone
module name,而不是backbone
。
这个小提琴仅使用大写的Backbone
模块名称,并且没有额外的模块加载。
否则您可以定义别名(如果放在名为Backbone.js
的文件中,则省略模块名称) - http://jsfiddle.net/3UXGZ/1/
define('Backbone', ['backbone'], function (Backbone) {
return Backbone;
});
我不确定您是否可以使用path
配置将新Backbone
模块指向现有的Backbone JS,因为这可能会加载与Backbone的第二个实例相同的文件,这可能会导致问题。