수색…


축소

축소는 다운로드 시간을 단축하기 위해 CSS 및 Javascript 파일의 크기를 줄이는 데 사용됩니다. 이 프로세스는 파일에서 불필요한 공백, 주석 및 기타 중요하지 않은 모든 내용을 제거하여 수행됩니다.

이 프로세스는 ScriptBundle 또는 StyleBundle 객체를 사용할 때 자동으로 수행됩니다. 이를 비활성화해야하는 경우 기본 Bundle 객체를 사용해야합니다.

Minification 사용 예제

다음 코드는 전 처리기 지시문을 사용하여 릴리스 중에 만 번들을 적용하여 비 릴리스 중에보다 쉽게 ​​디버깅 할 수 있도록합니다 (번들되지 않은 파일은 일반적으로 탐색하기가 더 쉽습니다).

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",  
    }  
 } 

번들은 Application_Start () 메소드 내부의 Global.asax 파일에 등록됩니다.

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 파일의 compilation 요소가 debug = "true"로 설정된 경우 번들링이 발생하지 않습니다. 대신 뷰의 Render 문은 번들되지 않은 비 - 축소 형식으로 각 개별 파일을 포함하므로 쉽게 디버깅 할 수 있습니다.

응용 프로그램이 프로덕션 모드에 있으면 (Web.config 파일의 compilation 요소가 debug = "false"로 설정된 경우) 번들링이 수행됩니다.

이것은 트위터 부트 스트랩의 아이콘 파일에 대한 참조와 같은 다른 파일의 상대 경로를 참조하는 스크립트에 대한 복잡성으로 이어질 수 있습니다. 이 문제는 System.Web.Optimization의 CssRewriteUrlTransform 클래스를 사용하여 해결할 수 있습니다.

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

CssRewriteUrlTransform 클래스는 번들 파일 내의 상대 URL을 절대 경로로 다시 작성하여 호출 참조가 번들의 위치로 이동 한 후 참조가 그대로 유지되도록합니다 (예 : 위 코드를 사용하여 ~ / 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