Backbone.js 主干未定义
我将backbone.js与require.js一起使用。我尝试了一个教程,这是我的index.html:Backbone.js 主干未定义,backbone.js,requirejs,Backbone.js,Requirejs,我将backbone.js与require.js一起使用。我尝试了一个教程,这是我的index.html: <script src="app/script/libs/require/require.js" data-main="app/script/main" type="text/javascript"></script> <script src="app/script/router.js" type="text/javascript"></scrip
<script src="app/script/libs/require/require.js" data-main="app/script/main" type="text/javascript"></script>
<script src="app/script/router.js" type="text/javascript"></script>
<script type='text/javascript'>
$(document).ready(function()
{
var appRouter = new AppRouter(); // Router initialization
Backbone.history.start(); // Backbone start
});
</script>
这是我的控制台:
ReferenceError: Backbone is not defined
[Break On This Error]
$(document).ready(function()
ReferenceError: $ is not defined
[Break On This Error]
$(document).ready(function()
Test output
$: function
_: function
Backbone: object
Require.js正在工作,但是主干和jquery没有定义,我不知道它们出了什么问题
这是我的文件的结构:
有什么想法吗。感谢在您的设置中,只有主干作为依赖项注入到requireJS模块中时,您才能使用主干,因为它在全局名称空间中不可用。同时,在大多数模块中需要jquery、主干网或下划线等功能似乎不是最好的主意。只需将它们作为脚本标签加载到requireJS主文件之前,一切都很好 如果要保留垫片解决方案,必须在main.js文件中启动应用程序
require.config({
urlArgs: "bust=" + (new Date()).getTime(),
paths: {
jquery: 'libs/jquery/jquery',
underscore: 'libs/underscore/underscore',
backbone: 'libs/backbone/backbone'
}
});
require(["jquery", "underscore", "backbone"],
function ($, _, Backbone) {
console.log("Test output");
console.log("$: " + typeof $);
console.log("_: " + typeof _);
console.log("Backbone: " + typeof Backbone);
$(document).ready(function() {
var appRouter = new AppRouter(); // Router initialization
Backbone.history.start(); // Backbone start
});
}
);
您还应在中声明您的LIB
我想说,
require.js
不起作用。尝试直接加载jQuery
和Backbone
,看看是否有效。如果是这样,require.js
没有正确加载它们。你确定文件就在你让require.js
查找它们的地方吗?@MikeW:我添加了我的文件结构。@MikeW如果我直接加载jquery和主干,效果会很好,但我真的不知道,我的require.js有什么问题。这是一幅很好的图片。我猜您为require.js
设置的路径是错误的。和往常一样,当你遇到问题时,简化。首先从问题中消除require.js
,然后直接加载库。当它起作用时,请考虑是否需要require.js
,如果需要,请在彻底检查配置后重新添加它。我更新了require.js的结构,但它仍然不起作用,谢谢。我仍然收到此错误ReferenceError:Backbone未定义var AppRouter=Backbone.Router.extend({
)。
require.config({
urlArgs: "bust=" + (new Date()).getTime(),
paths: {
jquery: 'libs/jquery/jquery',
underscore: 'libs/underscore/underscore',
backbone: 'libs/backbone/backbone'
}
});
require(["jquery", "underscore", "backbone"],
function ($, _, Backbone) {
console.log("Test output");
console.log("$: " + typeof $);
console.log("_: " + typeof _);
console.log("Backbone: " + typeof Backbone);
$(document).ready(function() {
var appRouter = new AppRouter(); // Router initialization
Backbone.history.start(); // Backbone start
});
}
);
require.config({
urlArgs: "bust=" + (new Date()).getTime(),
paths: {
jquery: 'libs/jquery/jquery',
underscore: 'libs/underscore/underscore',
backbone: 'libs/backbone/backbone'
},
shim: {
'backbone': {
deps: ["underscore", "jquery"],
exports: "Backbone"
},
'underscore': {
exports: "_"
}
}
});
require(["jquery", "underscore", "backbone"],
function ($, _, Backbone) {
console.log("Test output");
console.log("$: " + typeof $);
console.log("_: " + typeof _);
console.log("Backbone: " + typeof Backbone);
}
);