将带有依赖项列表的变量传递给define()时优化失败

时间:2014-12-18 11:23:08

标签: requirejs requirejs-optimizer

当我们在调试模式下运行我们的站点而不缩小脚本时,它可以工作:

var defines = [
    'globals',
    'templates'
];

define(defines, function(globals, templates) {
    //code...
});

但是一旦代码缩小,它就会停止工作。你知道为什么吗?

请注意这是有效的:

define([
    'globals',
    'templates'
], function(globals, templates) {
    //code...
});

我们想要使用数组的原因是因为我们想要遍历它来替换'模板'与' template.1010101010'其中10101010101是基于文件创建的时间戳,维护这样的文件使我们能够在文件更新时自动绕过缓存。

请注意,我们有更多文件需要循环播放。

1 个答案:

答案 0 :(得分:2)

r.js无法处理指定为除文字数组之外的其他内容的依赖项。这就是为什么这样做的原因:

define(['globals', 'templates'], function(globals, templates)...

但这不起作用:

var deps = ['globals', 'templates'];
define(deps, function(globals, templates)...

要使其正常工作r.js必须执行代码分析,这将使其更复杂,更慢。

出于缓存破坏的目的,获得您要实现的目标的一种方法是生成运行时配置,其中paths templates设置是在构建的步骤中动态设置的:

paths: {
    templates: 'templates.1.3.2'
}