javascript - 使用 requirejs、socketio、backbone 设置 jsfiddle

标签 javascript backbone.js socket.io requirejs

我花了半天多的时间尝试设置一个requirejs,socket.io,backbonejs fiddle ,以解决另一个SO问题。

这是我尝试过的。你可以看看我的fiddle 我尝试了几种方法但没有运气。

  1. 我已经像这样在头部加载了脚本。

  <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 的人编写,但这只能部分解决我的问题

  • 最佳答案

    很多错误。

    1. 您根本不应该为此使用 HTML 窗口。你可以把所有东西都放在JS窗口中。

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

    3. 无需对代码使用后备,paths 中的值应该是字符串而不是数组。

    4. 您的路径中的网址存在拼写错误。

    5. 这行var io = require('socket.io')无法工作。这是 RequireJS,而不是 CommonJS。这样的调用可以define调用中工作。

    6. Backbone 已经有一段时间不需要 shim 了。你的垫片毫无用处。

    7. 您不需要执行Backbone.$ = $

    8. 由于历史原因,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/

    相关文章:

    javascript - 在 ajax 加载的内容上加载 slider

    javascript - 设置全局时区

    javascript - 渲染后,无法识别带有 jquery 包装器的元素

    php - BackboneJS - 如何建立与 MySQL 数据库的连接

    javascript - Socket.IO - 如何替换客户端上的事件监听器

    node.js - 如何将包含 NodeJs 模块的 Codeigniter 应用程序部署到 Bluemix?

    javascript - JavaScript、DOM、HTML 5 的 API 引用

    Javascript正则表达式匹配k后面不跟数字0

    多个字段上的 JavaScript Backbone 集合排序

    java - Java中出现Socket read timed out Exception的原因是什么?