Одна из фич, незаметно попавших в ASP.NET 4.5 – встроенная поддержка минификации контента. Упаковщик живет в пространстве имен System.Web.Optimization.

Упаковка контента включена по умолчанию в шаблонах ASP.NET MVC 4/.NET 4.5 в Visual Stidio 11 Beta, и, надеюсь, останется включенной по умолчанию в релизной версии.

Хоть фича и упоминается как новшество в ASP.NET 4.5, она доступна для проектов на базе .NET 4.0 и ASP.NET MVC 3. Сам по себе упаковщик доступен в виде пререлизного пакета nuget.

После установки пакета придется сделать еще несколько изменений:

1. Добавить вызов EnableDefaultBundles на старте приложения, в global.asax.cs:

protected void Application_Start()
{
    AreaRegistration.RegisterAllAreas();

    RegisterGlobalFilters(GlobalFilters.Filters);
    RegisterRoutes(RouteTable.Routes);

    System.Web.Optimization.BundleTable.Bundles.EnableDefaultBundles();
}

2. Заменить явное подключение скриптов и стилей в _Layout.cshtml на

<link href="@System.Web.Optimization.BundleTable.Bundles.ResolveBundleUrl("~/Content/css")" rel="stylesheet" type="text/css" />
<script src="@System.Web.Optimization.BundleTable.Bundles.ResolveBundleUrl("~/Scripts/js")" type="text/javascript"></script>

После этого все css и все скрипты будут подтянуты двумя файлами:

Untitled

Скриншот выше снят для стандартного шаблона ASP.NET MVC 3. Все скрипты в шаблоне весят достаточно много, отсюда и полумегабайтный размер выходного файла. Достаточно удалить лишние файлы из Scripts, и размер пакета станет более приемлимым :)

Кроме очевидного “собрать все в один большой файл”, System.Web.Optimization делает еще несколько вещей:

  • Игнорирует файлы .intellisense.js, -vsdoc.js, .debug.js.
  • Подхватывает уже минимизированные файлы – min.js, и подключает их “как есть”.
  • Учитывает порядок подключения скриптов для JQuery/UI/Validate, modernizr, dojo, mootools, prototype и ext.js

    Дополнительная плюшка, котороя не слишком заметна в документации – возможность подключения своих трансформаций для выходных файлов, на случай если стандартных JsMinify и CssMinify не хватит. Список уже готовых трансформаций виден в поиске на nuget. И в нем уже есть Less и CoffeeScript.

  • Leave a Reply

    Your email address will not be published. Required fields are marked *

    You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>