ASP.NET MVC Bundles 用法和說(shuō)明(打包javascript和css)
在網(wǎng)頁(yè)中,我們經(jīng)常需要引用大量的javascript和css文件,在加上許多javascript庫(kù)都包含debug版和經(jīng)過(guò)壓縮的release版(比如jquery),不僅麻煩還很容易引起混亂,所以ASP.NET MVC4引入了Bundles特性,使得我們可以方便的管理javascript和css文件。
原來(lái),我們引用css和javascript文件我們需要這樣一個(gè)一個(gè)的引用:
<scriptsrc="~/Scripts/jquery-1.8.2.js"></script>
<scriptsrc="~/Scripts/jquery-ui-1.8.24.js"></script>
<scriptsrc="~/Scripts/jquery.validate.js"></script>
<linkhref="~/Content/Site.css"rel="stylesheet"/>
當(dāng)需要引用文件的數(shù)量較少時(shí)還好,但一旦每個(gè)頁(yè)面都需要引用較多文件時(shí),會(huì)造成極大的不便,當(dāng)我們想更換某個(gè)引用文件時(shí),將會(huì)浪費(fèi)大量的時(shí)間。發(fā)布時(shí),還要將一些庫(kù)替換成release版,比如上面的jquery-1.8.2.js所對(duì)應(yīng)的jquery-1.8.2.min.js
還好,現(xiàn)在我們可以使用Bundles特性:
public class BundleConfig
{
public static void RegisterBundles(BundleCollection bundles)
{
bundles.Add(new ScriptBundle("~/bundles/jquery")
.Include("~/Scripts/jquery-{version}.js"));
bundles.Add(new ScriptBundle("~/bundles/jqueryui")
.Include("~/Scripts/jquery-ui-{version}.js"));
bundles.Add(new ScriptBundle("~/bundles/jqueryval")
.Include("~/Scripts/jquery.unobtrusive*"
,"~/Scripts/jquery.validate*"));
bundles.Add(new StyleBundle("~/Content/css")
.Include("~/Content/site.css"));
}
}
接著在Global.asax文件的Application_Start方法中調(diào)用BundleConfig.RegisterBundles方法:
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
WebApiConfig.Register(GlobalConfiguration.Configuration);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
}
在上面我們可以看到我們按照功能的不同,將不同的文件分到了相應(yīng)的Bundle(Bundle就是包的意思),其中構(gòu)造函數(shù)中的string參數(shù)是Bundle的名稱,Include函數(shù)是將參數(shù)相應(yīng)的文件包含成一個(gè)Bundle??梢园l(fā)現(xiàn),對(duì)于jquery庫(kù)我們使用了這樣的名稱~/Scripts/jquery-{version}.js,其中{version}部分代表版本號(hào)的意思,MVC將會(huì)替我們?cè)赟cripts文件中尋找對(duì)應(yīng)的"jquery-版本號(hào).js"文件,并且在非debug模式下,MVC則會(huì)使用“jquery-版本號(hào).min.js"文件。
我們還看到我們使用了這樣的名稱~/Scripts/jquery.validate*的名稱,*是一個(gè)通配符,這就意味著Scripts文件夾下的所有前綴為jquery.validate的文件都將包含在同一個(gè)Bundle中。
最后,我們可以View上使用Bundle來(lái)代替原來(lái)引用的方式:
@Styles.Render("~/Content/css")
@Scripts.Render("~/bundles/jquery")
相關(guān)文章
在ASP.NET 2.0中操作數(shù)據(jù)之四十四:DataList和Repeater數(shù)據(jù)排序(三)
上篇已經(jīng)完成了自定義分頁(yè),這一節(jié)我們繼續(xù)完善排序功能。2016-05-05在ASP.NET 2.0中操作數(shù)據(jù)之三十四:基于DataList和Repeater跨頁(yè)面的主/從報(bào)表
前面介紹了使用GridView實(shí)現(xiàn)跨頁(yè)面的主/從報(bào)表,同樣DataList和Repeater也可以實(shí)現(xiàn)相同功能。2016-05-05在ASP.NET 2.0中操作數(shù)據(jù)之三十:格式化DataList和Repeater的數(shù)據(jù)
本文主要介紹ASP.NET 2.0使用DataList和Repeater如何呈現(xiàn)數(shù)據(jù),一種是在控件的ItemDataBound事件中處理,一種則是在綁定數(shù)據(jù)時(shí)調(diào)用后臺(tái)定義的方法來(lái)實(shí)現(xiàn)。2016-05-05.Net?Core微服務(wù)網(wǎng)關(guān)Ocelot基礎(chǔ)介紹及集成
這篇文章介紹了.Net?Core微服務(wù)網(wǎng)關(guān)Ocelot基礎(chǔ)及集成,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-01-01ASP.NET MVC4入門教程(八):給數(shù)據(jù)模型添加校驗(yàn)器
本文介紹給模型添加校驗(yàn)器,以前我們做表單驗(yàn)證都要前臺(tái)驗(yàn)證一遍,后臺(tái)再驗(yàn)證一遍,MVC4中這種方式,只需在模型上加驗(yàn)證規(guī)則,前后臺(tái)就都驗(yàn)證了。2016-04-04《解剖PetShop》之一:PetShop的系統(tǒng)架構(gòu)設(shè)計(jì)
PetShop是一個(gè)范例,微軟用它來(lái)展示.Net企業(yè)系統(tǒng)開(kāi)發(fā)的能力。本文主要講解PetShop4.0的系統(tǒng)架構(gòu)設(shè)計(jì),需要的朋友可以參考下。2016-05-05ASP.NET 2.0中的數(shù)據(jù)操作之七:使用DropDownList過(guò)濾的主/從報(bào)表
本文主要介紹在ASP.NET 2.0中如何給DropDownList控件綁定數(shù)據(jù)源,并通過(guò)DropDownList所選的不同的值,篩選出不同的數(shù)據(jù)信息。2016-05-05.NET 2.0獲取配置文件AppSettings和ConnectionStrings節(jié)數(shù)據(jù)的方法
.NET 2.0獲取配置文件AppSettings和ConnectionStrings節(jié)數(shù)據(jù)的方法...2007-12-12使用.Net6中的WebApplication打造最小API
本文詳細(xì)講解了使用.Net6中的WebApplication打造最小API,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-12-12