我正在尝试实现一个极端的基本测试,它使用通过require.js加载的jquery,underscore.js和backbone.js,出于某种原因,我似乎无法正常排列所有内容.研究表明,其他人没有遇到过同样的问题,所以我知道它一定是简单的,我只是没有看到.
我遇到的问题是,当backbone.js加载时,它找不到_的引用.我发现其他人报告了同样的问题,但问题通常是将依赖引用以错误的顺序传递给处理程序或其他明显的问题.当主干加载时会发生这种情况.
我还看到了许多"机械"解决方案,例如"将所有内容放在同一个文件中",并且只是按照正确的顺序将一些脚本包含在内,以传统的方式加载它们,但我真的想让它工作,因为它看起来像是一个强大的方法.
最初我开始使用这里的结构http://backbonetutorials.com/organizing-backbone-using-modules/,它在演示中起作用,但感觉有点脆弱,因为当我尝试进行非常简单的修改或从中构建一个简单的样本时它破碎了.
在对抗了这个问题很长时间之后,我回过头来找到这个页面 使用RequireJS加载Backbone和Underscore 以及另一个简单的例子,我重拾希望.但是,在基于它构建新测试之后,即使主干的0.5.3-optamd分支应该处理它自己对下划线的依赖,我仍然会收到相同的问题.
不用多说,这里应该是超级直接的代码,但却让我疯狂.这里有一些显而易见的东西,我错过了某种方式:
的index.html
<!DOCTYPE html>
<html>
<head>
<title>Backbone.js/Underscore.js via Require.js Learning Page</title>
<script src="js/libs/require/require.js"></script>
<script src="js/main.js"></script>
</head>
<body>
<div>Backbone.js/Underscore.js via Require.js Learning Page</div>
<div class="testhook"></div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
JS/main.js
require.config({
paths: {
'jquery': 'libs/jquery/1.7/jquery',
'underscore': 'libs/underscore/1.2.2/underscore',
'backbone': 'libs/backbone/0.5.3-optamd/backbone'
},
baseUrl: '/js',
urlArgs: 'v=1.0'
});
require([
'domReady',
'app'
],
function( domReady, App ){
domReady(function(){
console.log( 'Dom is ready' );
App.init();
});
}
);
Run Code Online (Sandbox Code Playgroud)
JS/app.js
// Filename: app.js
define([
'jquery',
'underscore',
'backbone'
],
function( $, …Run Code Online (Sandbox Code Playgroud)