0

在我的路由器文件中添加 Backstack 作为测试应用程序的模块时,它会引发错误 404 loadingbone.js

我不知道是什么原因,但是添加了一个额外的 http get 请求 js/Backbone.js 然后抛出 404,因为我的库只有在 js/libs 文件夹中。

可能是什么问题?

// 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
  };
});
4

1 回答 1

1

backstack 使用Backbone模块名称,而不是backbone.

此小提琴仅使用大写的Backbone模块名称,并且没有额外的模块负载。

http://jsfiddle.net/MUSBk/

或者你可以定义一个别名(如果你放在一个名为的文件中,请省略模块名称Backbone.js) - http://jsfiddle.net/3UXGZ/1/

define('Backbone', ['backbone'], function (Backbone) {
    return Backbone;
});

我不确定您是否可以使用您的path配置将新Backbone模块指向您现有的 Backbone JS,因为这可能会加载与 Backbone 的第二个实例相同的文件,这可能会导致问题。

于 2013-04-10T23:45:29.600 回答