Asp.net-Mvc
mvc4 捆綁包,它是如何工作的?
在 mvc4 中,他們使用包來呼叫所有腳本和 css 文件一次。據我所知,呼叫 js 和 cs 文件的順序很重要。如果我使用捆綁包,我如何知道捆綁包中的 css 和 js 文件的順序是否正確?我可以自定義訂購嗎?
我現在的日期選擇器有問題,它的 css 文件/主題似乎沒有正確載入,所以我想檢查捆綁包如何訂購 css/js 文件…謝謝:)
<link href="@System.Web.Optimization.BundleTable.Bundles.ResolveBundleUrl("~/Content/css")" rel="stylesheet" type="text/css" /> <link href="@System.Web.Optimization.BundleTable.Bundles.ResolveBundleUrl("~/Content/themes/base/css")" rel="stylesheet" type="text/css" /> <script src="@System.Web.Optimization.BundleTable.Bundles.ResolveBundleUrl("~/Scripts/js")"></script>
該問題的答案較晚,但 ASP.NET MVC 按字母順序對文件進行排序。您還可以使用IBundleOrderer介面手動訂購腳本文件。
例如,使用這樣的自定義 IBundleOrderer 實現:
Bundle myBundle = new Bundle("~/bundles/SiteScripts", new JsMinify()); myBundle.IncludeDirectory("~/Scripts/SiteScripts", "*.js"); myBundle.Orderer = new MyBundleOrderer(); bundles.Add(myBundle);MyBundleOrderer 從 web.config 文件中獲取高優先級腳本:
public class MyBundleOrderer : IBundleOrderer { public IEnumerable<System.IO.FileInfo> OrderFiles(BundleContext context, IEnumerable<FileInfo> files) { if (ConfigurationManager.AppSettings["HighPriorityScripts"] != null) { string[] highPriorityScripts = ConfigurationManager.AppSettings["HighPriorityScripts"].Split(','); List<FileInfo> listFiles = new List<FileInfo>(files); List<FileInfo> orderedFiles = new List<FileInfo>(); // Add high priority files in order : foreach (string highPriorityFile in highPriorityScripts) { FileInfo nextFileInfo = listFiles.Find(delegate(FileInfo arg) { return arg.Name == highPriorityFile; } ); if (nextFileInfo != null) { orderedFiles.Add(nextFileInfo); } } // Add remaining files to bundle : foreach (FileInfo lowPriorityFile in listFiles) { if (!orderedFiles.Contains(lowPriorityFile)) { orderedFiles.Add(lowPriorityFile); } } return orderedFiles; } return files; } }