实际上,我正面临 Requirejs 和 Backbone 的恼人问题。我正在两条不同的路径上开发我的应用程序:
- 主要访问,例如:/App/index.php#list
- 子访问,例如:/App/index.php/clone#list
当我需要使用 require([module]) 方法加载模块时出现问题。
如果我使用绝对路径,就像require(['/App/js/views/modal.js'])
我得到这个错误一样:
错误:模块的加载超时:/App/js/views/modal.js
如果我使用相对方式,例如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...
});
也许我遗漏了一些东西,但我不明白这背后的逻辑,为什么不使用绝对地址?