mvc 4 bundle - jQuery не отображается первым, хотя я добавил его первым - PullRequest
2 голосов
/ 20 марта 2012

global.asax:

var desktopJsBundle = new Bundle("~/desktop-js-bundle", new JsMinify());
desktopJsBundle.AddFile("~/scripts/jquery-1.7.1.min.js");
desktopJsBundle.AddFile("~/scripts/test.js");
BundleTable.Bundles.Add(desktopJsBundle);

layout.cshtml:

<script src="@System.Web.Optimization.BundleTable.Bundles.ResolveBundleUrl("~/desktop-js-bundle")"></script>

Если я посещу localhost/desktop-js-bundle/, я вижупримерно так:

/*! jQuery v1.7.1 jquery.com | jquery.org/license */
function mytest(){alert('test');}(function(a,b){function cy(a){return f............

Как видите, все началось с комментария, который находится вверху файла jquery.js, затем содержимое моего файла test.js, а затем сновасодержимое файла jquery.js.Странное поведениеКакие-нибудь мысли?Спасибо!

1 Ответ

3 голосов
/ 20 марта 2012

Происходит некоторое внутреннее упорядочение, оно следует определенным правилам, но вы можете переопределить эти правила.

Вот как вы указываете точный порядок файлов:

 //controls ordering for javascript files, otherwise they are processed in order of AddFile calls
 var bootstrapOrdering = new BundleFileSetOrdering("bootstrap");

 //The popover plugin requires the tooltip plugin
 bootstrapOrdering.Files.Add("bootstrap-tooltip.js");
 bootstrapOrdering.Files.Add("bootstrap-popover.js");

 BundleTable.Bundles.FileSetOrderList.Add(bootstrapOrdering);

UPDATE
Я перечитал ваш вопрос и понял, что вы удивились, увидев комментарии jQuery сверху. Это связано с другой причиной, чем внутренний порядок:
По сути, все комментарии в верхней части файлов извлекаются, объединяются и помещаются сверху, например, по причинам лицензирования. Часто вам не разрешается распространять библиотеку без лицензии поверх нее, и они обычно находятся в комментариях. Таким образом, команда ASP.NET позаботилась о том, чтобы они не пропускались при минимизации / связывании.

...