Я не уверен на 100%, с какой частью у вас проблемы. Похоже, вы хотите динамически включать пакеты? Я бы действительно старался держаться подальше от использования любого механизма, который динамически захватывает JS, а затем объединяет / объединяет его в любом конкретном порядке.
Рано или поздно вам понадобится точный контроль над тем, какой JS в каком порядке включен. Чем раньше вы решите эту проблему, тем надежнее будет ваше приложение в будущем. Обидно, что они даже создали возможность просто автоматически объединять все скрипты в папку, это такая плохая идея.
Таким образом, у вас остается крайне незначительное раздражение, связанное с необходимостью указывать порядок включения для ваших файлов и пакетов javascript. Мы делаем это, поддерживая простой List<string>
, который используется при запуске приложения.
Сейчас я думаю, что для нашего использования мы можем обойтись только одним большим пакетом для сайта, но я мог видеть настройку возможности указывать пакеты, а затем также указывать порядок включения для пакетов. В конце концов, вы просто закончите с List<T>
, чтобы перейти.
Вот как выглядит наш фрагмент скриптов, он позволяет нам динамически переключаться между использованием пакета или использованием индивидуально включенных файлов javascript:
@if (NameSpace.UI.UseBundledResources) // set in the web.config, different per environment
{
<script src="@Url.ContentNoCache("~/bundle.js")" type="text/javascript"></script>
}
else
{
foreach (var file in NameSpace.UI.JavaScriptFileNames)
{
<script src="@Url.ContentNoCache(file)" type="text/javascript"></script>
}
}
и наше приложение запускается
var customJsFiles = NameSpace.UI.JavaScriptFileNames;
var myJSBundle = new Bundle("~/bundle.js", typeof(JsMinify));
customJsFiles.ForEach(f => myJSBundle.AddFile(f));
BundleTable.Bundles.Add(myJSBundle);
person
Allen Rice
schedule
24.05.2012