我正在尝试使用mvc4捆绑功能缩小javascript文件

时间:2013-05-09 07:17:59

标签: javascript asp.net-mvc-4 bundling-and-minification system.web.optimization

我想捆绑我的所有JavaScript文件,因此它应该只访问服务器一次。但有了这个,我面临一个问题。

bundles.Add(new ScriptBundle("~/LayoutJs").Include(
                "~/Scripts/Libraries/jquery-1.8.2.min.js",
                "~/Scripts/Libraries/kendo/2013.1.319/kendo.all.min.js",
                "~/Scripts/Libraries/jquery.blockUI.js",
                "~/Scripts/Libraries/knockout/knockout-2.1.0.js",
                "~/Scripts/Libraries/knockout/knockout.mapping-latest.js",
                "~/Scripts/Libraries/jquery.unobtrusive-ajax.min.js",
                "~/Scripts/Libraries/tabStrip.js",
                "~/Scripts/Libraries/underscore-min.js",
                "~/Scripts/Libraries/knockout/knockout-kendo.min.js",
                "~/Scripts/Common.js"
                ));

我收到的错误是jquery没有定义,但我在包的顶部包含了jquery。

如何解决此问题?

2 个答案:

答案 0 :(得分:4)

我相信这是因为您正在尝试捆绑min文件。这些文件将被MVC4捆绑器忽略。

解决此问题的方法是重命名.min文件。或者创建自己的忽略模式(参见链接)。

https://stackoverflow.com/a/12005272/1593273

您还可以升级到已修复的1.1-alpha1版本。

ASP.NET Web Optimization

答案 1 :(得分:0)

请先确保您添加了以下脚本

bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
 "~/Scripts/jquery-1.7.1.min.js",
 "~/Scripts/jquery.validate.min.js",
 "~/Scripts/jquery.validate.unobtrusive.min.js"));

并确保上面的bundle在BundleConfig类中定义,如下所示:

public class BundleConfig
{
 public static void RegisterBundles(BundleCollection bundles)
 {


bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
 "~/Scripts/jquery-1.7.1.min.js",
 "~/Scripts/jquery.validate.min.js",
 "~/Scripts/jquery.validate.unobtrusive.min.js"));
 }
} 

“*”通配符用于组合同一目录中的文件,并且其名称具有相同的前缀或后缀。假设您要添加“〜/ Script”目录中存在的所有脚本文件并以“jquery”作为前缀,那么您可以创建如下所示的包:

bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include("~/Scripts/jquery*.js"));

所有捆绑包都在您的Web应用程序的Global.asax文件的Application_Start事件中注册。

protected void Application_Start()
{
 BundleConfig.RegisterBundles(BundleTable.Bundles);
 // code
}