1

实际上,我正面临 Requirejs 和 Backbone 的恼人问题。我正在两条不同的路径上开发我的应用程序:

  1. 主要访问,例如:/App/index.php#list
  2. 子访问,例如:/App/index.php/clone#list

当我需要使用 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...
});

也许我遗漏了一些东西,但我不明白这背后的逻辑,为什么不使用绝对地址?

4

1 回答 1

1

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

于 2012-09-17T23:00:36.933 回答