我已经看到很多关于使用带有Backbone,Underscore和jQuery的RequireJS的问题。我的问题略有不同;我的应用程序工作,但我不知道为什么。
目前,Underscore,jQuery和Backbone都出口AMD模块,因此我无需再次对其进行填充并导出变量。因此,我的main.js
看起来像以下代码段。
main.js
require.config({
paths: {
jquery: 'lib/jquery/jquery-1.10.2',
'jquery-ui': 'lib/jquery/jquery-ui-1.10.4.min',
underscore: 'lib/underscore/underscore.min',
backbone: 'lib/backbone/backbone.min',
'backbone.localStorage': 'lib/backbone/backbone.localStorage'
}
});
require(['jquery', 'jquery-ui', 'underscore', 'backbone', 'backbone.localStorage'], function() {
});
require.html
<!DOCTYPE html>
<html>
<head>
<title>My Sample Project</title>
<!-- data-main attribute tells require.js to load
scripts/main.js after require.js loads. -->
</head>
<body>
<h1>My Sample Project</h1>
<div id="test"> </div>
<script type="text/javascript" data-main="js/main" src="js/lib/require/require.js"></script>
<script type="text/javascript">
</script>
</body>
</html>
当我转到require.html
时,我可以进入控制台,所有变量都正确加载。例如,var x = Backbone.Model.extend({}); var y = new x;
工作得很好。但是,Backbone依赖于Underscore和jQuery。 RequireJS是否使用这些库提供的模块自动解决这些依赖关系,还是仅仅作为一个侥幸?
答案 0 :(得分:1)
在requirejs config setup
之后你有require
require(['jquery', 'jquery-ui', 'underscore', 'backbone', 'backbone.localStorage'], function() {
});
他们以正确的顺序加载,以控制在垫片中定义每个模块的依赖关系
所需的序列答案 1 :(得分:0)
这种工作需要很多帮助。
你可以用一种简单而正确的方式指定依赖关系usim'shim'命令。
//Coffeescript example
paths:
backbone : 'path/backbone'
underscore : 'path/underscore'
jquery: 'path/jquery'
shim:
backbone:
deps:['underscore','jquery']
exports: 'Backbone'
通过这种方式,您可以定义在调用名为“Backbone”的模块时,require将加载在deps:[]中编写的所有依赖项。 现在它永远不会在下划线之前加载骨干。
我有一个博客和一篇关于它的帖子,不幸的是它只是葡萄牙语,但也许有帮助。
http://www.rcarvalhojs.com/backbone/2014/06/03/comecando-require-backbone.html