如果分配给嵌套require中的变量,RequireJS R.js看不到依赖的require文件

时间:2013-02-11 16:52:16

标签: javascript requirejs r.js

我遇到了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'
})

1 个答案:

答案 0 :(得分:3)

r.js docs page

上实际提及并解释了这一点
  

(...)   因此,它不会找到通过变量名加载的模块:

 var mods = someCondition ? ['a', 'b'] : ['c', 'd'];
 require(mods);

那是因为r.js将脚本扫描为文本,它实际上并不评估它们。看看它的源代码,你会发现正在进行大量的正则表达式匹配。