我花了半天多的时间尝试设置一个requirejs,socket.io,backbonejs fiddle ,以解决另一个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 的人编写,但这只能部分解决我的问题
最佳答案
很多错误。
您根本不应该为此使用 HTML 窗口。你可以把所有东西都放在JS窗口中。
您不应将
.js
扩展名放入路径中。无需对代码使用后备,
paths
中的值应该是字符串而不是数组。您的
路径
中的网址存在拼写错误。这行
var io = require('socket.io')
无法工作。这是 RequireJS,而不是 CommonJS。这样的调用可以在define
调用中工作。Backbone 已经有一段时间不需要
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你的 fiddle 。
关于javascript - 使用 requirejs、socketio、backbone 设置 jsfiddle,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40638142/