实际上我遇到了Requirejs和Backbone的棘手问题。 我正在两条不同的路径上开发我的应用程序:
当我需要使用方法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...
});
也许我错过了一些东西,但我没有得到这背后的逻辑,为什么不使用绝对地址?
答案 0 :(得分:1)
您不需要将.js
附加到require.js中文件名的末尾,而且我自己也看到了奇怪的行为。另外,我建议您在应用程序的各个模块中使用相对路径,因为它可以将应用程序的模块/组件拖放到另一个应用程序中更直接。