我正在开发一个 ASP.Net MVC 4 应用程序,并使用 Bundling 和 minifiction 来呈现样式和脚本文件。
我有一个脚本文件( 文件 A )在另一个文件( 文件 B )中调用函数,当我使用@Scripts.Render()
它呈现的方法 link
标签 文件 A 之前 文件 B 所以它会触发错误并且脚本无法正常工作。
有什么办法可以强制@Script.Render()
渲染 link
按特定顺序标记而不为每个文件使用单独的包????
编辑
我正在使用 IncludeDirectory
包含该文件夹中所有脚本文件的方法
public class BundleConfig
{
public static void RegisterBundles(BundleCollection bundles)
{
bundles.Add(new ScriptBundle("~/bundles/js").IncludeDirectory(
"~/Scripts/js",
"*.js"));
}
}
最佳答案
默认情况下, bundle 将按字母顺序添加脚本。它将围绕已知库移动并以正确的顺序添加它们(例如,它将首先放入 jQuery,然后是 jQuery-ui)。
最简单的方法是自己订购脚本。一种方法是将您的自定义脚本移到不同的文件夹,然后按照您想要的顺序将所有脚本添加到它们自己的包中:
public class BundleConfig
{
public static void RegisterBundles(BundleCollection bundles)
{
bundles.Add(new ScriptBundle("~/bundles/js").IncludeDirectory(
"~/Scripts/js","*.js"));
bundles.Add(new ScriptBundle("~/bundles/myScripts").Include(
"~/Scripts/custom/scriptB.js",
"~/Scripts/custom/scriptA.js"));
}
}
另一种选择是通配符。此选项仍然包括将您的自定义脚本移动到它们自己的文件夹中,但只有一个包 ( source ):*
public class BundleConfig
{
public static void RegisterBundles(BundleCollection bundles)
{
bundles.Add(new ScriptBundle("~/bundles/js").Include(
"~/Scripts/*.js",
"~/Scripts/custom/scriptB.js",
"~/Scripts/custom/scriptA.js"));
}
}
另外关于您的评论“是否有任何方法可以强制
@Script.Render()
以特定顺序呈现 link
标签,而无需为每个文件使用单独的包”——请注意,单独的链接标签仅在 Debug模式下发生。在 Release模式下部署后,将只有一个链接标签和一个文件。
关于asp.net - 强制 ASP.Net MVC Bundle 按特定顺序呈现 javascript 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14563415/