Поиск…


минификация

Минимизация используется для уменьшения размера файлов CSS и Javascript для ускорения загрузки. Этот процесс выполняется путем удаления всех ненужных пробелов, комментариев и любого другого несущественного содержимого из файлов.

Этот процесс выполняется автоматически при использовании ScriptBundle или StyleBundle . Если вам нужно отключить его, вы должны использовать базовый объект Bundle .

Пример использования

В следующем коде используются директивы препроцессора для применения пакета только во время выпусков, чтобы упростить отладку во время не-выпусков (поскольку файлы, не связанные в комплекте, обычно легче перемещаться):

public static void RegisterBundles(BundleCollection bundles)  
{  
    #if DEBUG
        bundles.Add(new Bundle("~/bundles/jquery").Include("~/Scripts/jquery-{version}.js"));
        bundles.Add(new Bundle("~/Content/css").Include("~/Content/site.css"));  
    #else
        bundles.Add(new ScriptBundle("~/bundles/jquery").Include("~/Scripts/jquery-{version}.js"));
        bundles.Add(new StyleBundle("~/Content/css").Include("~/Content/site.css"));  
    #endif
}

Связки сценариев и стилей

Ниже приведен фрагмент кода по умолчанию для файла BundleConfig.cs.

using System.Web.Optimization;

public class BundleConfig  
{  
    // For more information on Bundling, visit http://go.microsoft.com/fwlink/?LinkId=254725  
    public static void RegisterBundles(BundleCollection bundles)  
    {  
        bundles.Add(new ScriptBundle("~/bundles/jquery").Include(  
                    "~/Scripts/jquery-{version}.js"));  
                    
    // Use the development version of Modernizr to develop with and learn from. Then, when you're  
    // ready for production, use the build tool at http://modernizr.com to pick only the tests you need.  
    bundles.Add(new ScriptBundle("~/bundles/modernizr").Include(  
                "~/Scripts/modernizr-*"));  

    bundles.Add(new StyleBundle("~/Content/css").Include("~/Content/site.css"));  

    bundles.Add(new StyleBundle("~/Content/themes/base/css").Include(  
                "~/Content/themes/base/jquery.ui.core.css",  
                "~/Content/themes/base/jquery.ui.resizable.css",  
    }  
 } 

Связки регистрируются в файле Global.asax внутри метода Application_Start ():

using System.Web.Optimization;

protected void Application_Start() 
{
    BundleConfig.RegisterBundles(BundleTable.Bundles);
}

Связки должны отображаться в ваших представлениях так:

@using System.Web.Optimization

@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/bundles/modernizr")
@Styles.Render("~/Content/css") 
@Styles.Render("~/Content/themes/base/css") 

Обратите внимание, что сложение не происходит, когда вы находитесь в режиме разработки (где элемент компиляции в файле Web.config установлен на debug = "true"). Вместо этого операторы Render в ваших представлениях будут включать в себя каждый отдельный файл в несвязанном, не ограниченном формате, для облегчения отладки.

Когда приложение находится в режиме производства (где элемент компиляции в файле Web.config установлен на debug = "false"), произойдет объединение.

Это может привести к осложнениям для скриптов, которые ссылаются на относительные пути других файлов, например ссылки на файлы значков Twitter Bootstrap. Это можно решить, используя класс CssRewriteUrlTransform System.Web.Optimization:

 bundles.Add(new StyleBundle("~/bundles/css").Include(
                "~/Content/css/*.css", new CssRewriteUrlTransform()));

Класс CssRewriteUrlTransform будет переписывать относительные Urls в объединенных файлах в абсолютные пути, чтобы ссылки оставались неповрежденными после того, как ссылка на вызов переместилась в местоположение пакета (например, используя приведенный выше код, перемещаясь из «~ / Content / css / bootstrap.css "на" ~ / bundles / css / bootstrap.css ").



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow