我遇到了r.js在嵌套的require调用中查找文件依赖性的问题。
如果我传递需要一个字符串数组,压缩器工作正常,找到所有文件依赖项。
define([
'jquery',
'underscore',
'backbone'
], function() {
require(['views/MobileNavView']); // Works fine!
});
如果我传递需要一个我已分配给变量的字符串数组,压缩器就找不到文件依赖项。
var requiredFiles = [
'views/MobileNavView'
];
define([
'jquery',
'underscore',
'backbone'
], function() {
require(requiredFiles); // Doesn't Work!
});
如果我将字符串数组赋给变量,可能导致压缩器找不到文件依赖项?
这是我的app.build.js
({
baseUrl: '.',
findNestedDependencies: true,
mainConfigFile: 'Main.js',
name: 'Main',
out: 'Core.js',
optimize: 'none'
})
答案 0 :(得分:3)
在r.js
docs page
(...) 因此,它不会找到通过变量名加载的模块:
var mods = someCondition ? ['a', 'b'] : ['c', 'd']; require(mods);
那是因为r.js
将脚本扫描为文本,它实际上并不评估它们。看看它的源代码,你会发现正在进行大量的正则表达式匹配。