ScriptBundle 一般用法
C#的代码如下:
bundles.Add(new ScriptBundle("~/bundles/jqueryval") .Include("~/Scripts/modernizr-*", "~/Scripts/json2.js", "~/Scripts/columnizer.js", "~/Scripts/jquery.ui.message.min.js", "~/Scripts/Shared/achievements.js", "~/Scripts/Shared/canvas.js"));此时在cshtml上,使用@RenaderScript时,他是按照脚本文件的字母顺序生成的。 但是有时候我们是不能按照这个顺序加载的。
这是我们需要派生IBundleOrderer按照自己的顺序进行生成。
代码如下:
public class AsIsBundleOrderer : IBundleOrderer
{
public virtual IEnumerable<BundleFile> OrderFiles(BundleContext context, IEnumerable<BundleFile> files)
{
return files;
}
}
然后按照下面的代码修改
public class BundleConfig { public static void RegisterBundles(BundleCollection bundles) { var bundle = new Bundle("~/bundles/scripts/canvas"); bundle.Orderer = new AsIsBundleOrderer(); bundle.Include("~/Scripts/modernizr-*", "~/Scripts/json2.js", "~/Scripts/columnizer.js", "~/Scripts/jquery.ui.message.min.js", "~/Scripts/Shared/achievements.js", "~/Scripts/Shared/canvas.js"); bundles.Add(bundle); } }
此时看看生成的页面,是不是脚本的引入顺序的变化?脚本能正确执行了!
本文介绍如何通过派生IBundleOrderer来自定义ASP.NET Bundle中脚本文件的加载顺序,确保脚本按需加载,避免因加载顺序不当导致的问题。
655

被折叠的 条评论
为什么被折叠?



