2014-12-18 3 views
0

Когда мы проводим наш сайт в режиме отладки без Минимизации скрипта это работает:Оптимизация происходит сбой при передаче переменного со списком зависимостей для определения()

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

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

Но как только код уменьшенный останавливается работать. Ты знаешь почему?

Пожалуйста, обратите внимание, что это работает:

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

причина, почему мы хотим использовать массив, потому что мы хотим, чтобы петли через него, чтобы заменить «шаблон» с «» template.1010101010 где 10101010101 является отметка о времени основанный на создании файла, поддержка такого файла позволяет нам автоматически обойти кеш при обновлении файла.

Обратите внимание: у нас есть больше файлов для прокрутки.

ответ

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' 
} 
+0

Также можно выполните следующие действия: var templates = 'template.123'; define (['globals', templates], function (globals, templates) ... Хотя вы дали мне ответ, я нуждался в этом, это не решает нашу проблему, когда мы иногда хотим загрузить дополнительный файл из основного, конечно мы могли бы загрузить его в дополнительном запросе, но мне бы хотелось, чтобы он мог быстрее его загружать – PaRoxUs