urlArgs
опция is used by the nameToUrl
method of requirejs' context. Это означает, что в контексте все модули будут использовать этот параметр. Different contexts can have different options, но контексты микширования будут более сложными, чем это стоит: недостаточно будет определить два набора параметров конфигурации, но разные модули потребуются по-разному, а модули из другого контекста не могут быть перечислены в одной зависимости список.
Тем не менее, вот пример того, как это может быть достигнуто (fiddle):
// default context
require.config({
urlArgs: "boost=" + (new Date()).getTime(),
paths: {
jquery: "//ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min",
}
});
// cached (non-boosted) context
var reqCached = require.config({
context: "cached",
paths: {
jquery: "//ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min",
}
});
// define a module "inline", normally it'll go into <base>/main.js
define("main", ["jquery"], function($) {
$("body").append("<div>boosted jquery</div>");
reqCached(["jquery"], function($) {
$("body").append("<div>cached jquery</div>");
});
});
// bootstrap the "application" - load and execute the main module
requirejs(["main"], function(main) {
});
В инструментах разработчика вы можете видеть, что это надуманный пример загружает две версии JQuery - один кэш-рост (зависимость «основного» модуля) и одной простой (требуется вручную с контекстом reqCached
). Увы, невозможно - или я не знаю способа - смешивать и сопоставлять два контекста, чтобы они обеспечивали прозрачность различных наборов модулей.
Я уверен, что ОП просит практическое решение, а не доказательство концепции (например, использование контекстов), которое при вводе в эксплуатацию превратит обслуживание в кошмар. Не поймите меня неправильно: контексты * имеют * их использование. Разделение одного приложения на два, чтобы иметь возможность использовать разные «urlArgs», просто не является одним из них. – Louis
Я прямо заявляю, что предложение непригодно :-) – artm