我花了半天多的时间试图建立一个 requirejs,socket.io,backbonejs 小提琴,以便解决另一个SO问题。
这是我尝试过的。你可以查看我的fiddle 我试了几次没有运气。
<head>
<script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.2/require.js"></script>
<script>
requirejs.config({
paths: {
'socket.io': ['https://cdnjs.cloudflare.com/ajax/libs/socket.io/1.5.1/socket.io.js'],
'jquery': ['https//cdnjs.cloudflare.com/ajax/libs/jquery/3.0.0/jquery.min.js'],
'underscore': ['https//cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js'],
'backbone': ['https//cdnjs.cloudflare.com/ajax/libs/backbone.js/1.3.3/backbone-min.js']
},
shim: {
'backbone': ['underscore']
},
waitSeconds: 3
});
</script>
</head>
<body>
<div id='page'>
<div id='incomingChatMessages'>
</div>
</div>
</body>
</html>
以下是我尝试在js组件中加载脚本的方法
requirejs.config({
paths: {
'socket.io': ['https://cdnjs.cloudflare.com/ajax/libs/socket.io/1.5.1/socket.io.js'],
'jquery': ['https//cdnjs.cloudflare.com/ajax/libs/jquery/3.0.0/jquery.min.js'],
'underscore': ['https//cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js'],
'backbone': ['https//cdnjs.cloudflare.com/ajax/libs/backbone.js/1.3.3/backbone-min.js']
},
shim: {
'backbone': ['underscore']
},
waitSeconds: 3
});
var io = require('socket.io')
var $, Backbone;
require(['jquery', 'underscore', 'backbone'], function(jq, us, bb) {
$ = jq;
Backbone = bb;
});
Backbone.$ = $;
这里有一个link是由某人在jsfiddle中使用requirejs加载jquery但是只能部分地解决我的问题
答案 0 :(得分:1)
很多错误。
您根本不应该使用HTML窗口。您可以将所有内容放在JS窗口中。
您不应将.js
个扩展名放在路径中。
没有必要为代码使用回退,paths
中的值应该是字符串而不是数组。
您在paths
。
此行var io = require('socket.io')
无法有效。这是RequireJS,而不是CommonJS。这样的电话可以在define
电话中工作。
Backbone现在已经有一段时间不需要shim
了。你的shim
没用。
您不需要Backbone.$ = $
。
由于历史原因,jQuery和Backbone都会泄漏到全球空间。因此,您不必手动执行此操作。
这里是清理过的JS:
requirejs.config({
paths: {
'socket.io': 'https://cdnjs.cloudflare.com/ajax/libs/socket.io/1.5.1/socket.io',
'jquery': 'https://cdnjs.cloudflare.com/ajax/libs/jquery/3.0.0/jquery.min',
'underscore': 'https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min',
'backbone': 'https://cdnjs.cloudflare.com/ajax/libs/backbone.js/1.3.3/backbone-min'
},
waitSeconds: 3
});
require(['jquery', 'underscore', 'backbone', 'socket.io'], function(jq, us, bb, io) {
console.log($, Backbone.$, Backbone);
});
请注意console.log
如何依赖$
和Backbone
在全球空间。
你的小提琴的fork。