Requirejs:模块加载超时

时间:2012-09-17 00:51:06

标签: backbone.js requirejs

实际上我遇到了Requirejs和Backbone的棘手问题。 我正在两条不同的路径上开发我的应用程序:

  1. 主要访问权限,例如:/App/index.php#list
  2. 子访问,例如:/App/index.php/clone#list
  3. 当我需要使用方法require([module])加载模块时,会出现问题。

    如果我使用绝对路径,例如require(['/App/js/views/modal.js']),我只会收到此错误:

      

    错误:模块加载超时:/App/js/views/modal.js

         

    http://requirejs.org/docs/errors.html#timeout

    如果我使用相对方式,例如我的主访问权限require(['js/views/modal.js'])和子访问权限require(['../js/views/modal.js']),则一切都按预期工作。

    我正在使用绝对路径加载其他模块并且它们可以工作,如果我复制模块并且需要使用不同的名称它可以工作,我认为唯一的区别是我需要的模块已经被定义了另一个模块,所以它已被加载,如下所示:

    主要模块

    require('/App/js/views/row.js'], function(Row){
         Somecode...
    });
    
    ....
    
    require('/App/js/views/modal.js'], function(Modal){
         Othercode...
    });
    

    行模块

    define([
    'backbone',
    'text!templates/row.html',
    'views/modal', //the same view callend in my main file!
    ], function(Backbone, rowTemplate, Modal){
        Viewcode...
    });
    

    模态模块

    define([
    'backbone',
    'text!templates/modal.html',
    'models/user_model',
    ], function(Backbone, modalTemplate, Model){
        Viewcode...
    });
    

    也许我错过了一些东西,但我没有得到这背后的逻辑,为什么不使用绝对地址?

1 个答案:

答案 0 :(得分:1)

您不需要将.js附加到require.js中文件名的末尾,而且我自己也看到了奇怪的行为。另外,我建议您在应用程序的各个模块中使用相对路径,因为它可以将应用程序的模块/组件拖放到另一个应用程序中更直接。