摘要:ASP.NET MVC 手動利用System.Web.Optimization綁定壓縮JS與CSS
網站上對CSS與JS檔的綁定與壓縮的好處,我想在網路上各位前輩都已經解釋的很清楚
小弟就不再此贅述,會放至參考連結中
在visual studio中選擇MVC專案>基本
在App_Start的資料夾中就會有BundleConfig.cs這支程式,
預設都會將Script內的資料做打包!
但如果是選擇產一個空的網站,則不會`引用System.Web.Optimization
當然也不會有BundleConfig.cs這支程式
本篇就透過建立空網站的專案,運用NUGET手動的方式安裝System.Web.Optimization與手動打包與壓縮JS與CSS
如果有任何地方解釋有誤,
也請各位前輩不吝指正錯誤.
首先,先新增專案
選擇空白網站
先至Nuget取得我們預安裝的元件位置
連結:https://www.nuget.org/packages/Microsoft.AspNet.Web.Optimization/
透過套件管理主控台安裝System.Web.Optimization
在App_start中加入新增類別
新增>>BundleConfig.cs
接下來就開始刻CODE嚕
using System.Web.Optimization;
namespace MinifiedMVC_Sample
{
public class BundleConfig
{
public static void RegisterBundles(BundleCollection bundles)
{
/*new ScriptBundle("自己指定的JS檔虛擬位置")
.Include("實體JS檔案存放位置")*/
bundles.Add(new ScriptBundle("~/bundles/jquery")
.Include("~/Scripts/jquery-{version}.js"
));
/*new StyleBundle("自己指定的css檔虛擬位置")
.Include("實體css檔案存放位置")*/
bundles.Add(new StyleBundle("~/bundles/css")
.Include("~/Content/themes/base/autocomplete.css",
"~/Content/themes/base/button.css"
));
//當設定為true時,輸出則會顯示壓縮後的檔案
//當為false,輸出則顯示個別檔案
BundleTable.EnableOptimizations = true;
}
}
}
接著在Global.asax中註冊事件
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Http;
using System.Web.Mvc;
using System.Web.Optimization;
using System.Web.Routing;
namespace MinifiedMVC_Sample
{
// 注意: 如需啟用 IIS6 或 IIS7 傳統模式的說明,
// 請造訪 http://go.microsoft.com/?LinkId=9394801
public class MvcApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
WebApiConfig.Register(GlobalConfiguration.Configuration);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
//再此註冊RegisterBundles事件
BundleConfig.RegisterBundles(BundleTable.Bundles);
}
}
}
最後在View中的Header.cshtml 加入
在來開啟首頁來看看當設定
BundleTable.EnableOptimizations = false;
接著在回到BundleConfig.cs
將BundleTable.EnableOptimizations = true;
在看看是否有綁並與壓縮成功
噹噹噹~確實綁定也做了壓縮
壓縮失敗的時候,這時也會有很貼心的提醒
請看下圖
當然System.Web.Optimization有也提供更多做綁定的方法,
除了使用正規表達式去對應實體檔案路徑,還有對LESS去做綁定等等...
詳細使用方式請參考 bundling-and-minification
最後放上範例程式碼