设置jsfiddle with requirejs,socketio,backbone

时间:2016-11-16 17:08:50

标签: javascript backbone.js socket.io requirejs

我花了半天多的时间试图建立一个 requirejs,socket.io,backbonejs 小提琴,以便解决另一个SO问题。

这是我尝试过的。你可以查看我的fiddle 我试了几次没有运气。

  1. 我已经像这样在头脑中加载了脚本。
  2.   <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>
    
    1. 以下是我尝试在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.$ = $;
      
    2. 这里有一个link是由某人在jsfiddle中使用requirejs加载jquery但是只能部分地解决我的问题

1 个答案:

答案 0 :(得分:1)

很多错误。

  1. 您根本不应该使用HTML窗口。您可以将所有内容放在JS窗口中。

  2. 您不应将.js个扩展名放在路径中。

  3. 没有必要为代码使用回退,paths中的值应该是字符串而不是数组。

  4. 您在paths

  5. 中的网址中存在拼写错误
  6. 此行var io = require('socket.io') 无法有效。这是RequireJS,而不是CommonJS。这样的电话可以define电话中工作。

  7. Backbone现在已经有一段时间不需要shim了。你的shim没用。

  8. 您不需要Backbone.$ = $

  9. 由于历史原因,jQuery和Backbone都会泄漏到全球空间。因此,您不必手动执行此操作。

  10. 这里是清理过的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