(此文章同時發表在本人微信公眾號“dotNET每日精華文章”,歡迎右邊二維碼來關注。)
眾所周知,在ASP.NET MVC中很早就存在一個所謂的“bundling and minification”的特性,那么在ASP.NET 5中,這個特性跑哪里去了?待今天推薦的文章來分解。
在使用ASP.NET MVC4、5開發Web應用的時候,為了加速加載客戶端的一些資源(比如js和CSS),需要對這些js和css進行打包和壓縮來減少瀏覽器對服務器的請求次數。具體做法就是在App_Start文件夾的BundleConfig.cs中添加要打包壓縮的內容,比如:
bundles.Add(new ScriptBundle("~/bundles/jquery").Include( "~/Scripts/jquery-{version}.js"));
然后在視圖文件(*.cshtml)中通過如下這樣的代碼來引用,ASP.NET MVC的引擎會自動在程序執行的時候打包壓縮并引用一個內存中的虛擬地址:
@Scripts.Render("~/bundles/jquery")
然而,在ASP.NET 5中微軟廢棄了這個特性,這是因為一方面上述方法會導致瀏覽器訪問的文件是運行時動態生成(然而這樣的生成過程不是每次都需要且有時候生成過程還是會占用資源),另外一方面在ASP.NET 5中可以被其他類似的組件所代替。比如使用Gulp, npm和bower等。
具體做法是,在package.json文件中引入(就是直接手動編寫)額外三個gulp擴展:gulp-concat, gulp-uglify和gulp-rename。VS會自動調用npm來安裝這些擴展。
而后,在gulpfile.js中,添加打算打包壓縮的任務腳本,最后在“Task Runner Explorer”中執行這個任務腳本。
那么還有一個問題就是,如何在開發的時候使用未打包壓縮的js代碼,而在生產環境下使用處理過的js文件呢。本文作者jeffrey fritz給出了一種解決辦法,就是利用ASP.NET MVC 6的新特性TagHelper的環境配置,比如如下圖:
更詳細的做法,可“閱讀原文”來查看。
原文地址:http://www.jeffreyfritz.com/2015/05/where-did-my-asp-net-bundles-go-in-asp-net-5/
新聞熱點
疑難解答