在ASP.net MVC中捆绑和缩小的问题

时间:2014-08-01 14:27:02

标签: asp.net-mvc bundling-and-minification

我已将所需的库捆绑在一起。

bundles.Add(new ScriptBundle("~/bundles/libraries").Include(
                        "~/Content/js/jquery.1.10.2.js",
                        "~/Content/js/jquery.ui.1.10.3.js",
                        "~/Content/js/angular.js",
                        "~/Content/js/ng-grid-2.0.11.min.js",
                        "~/Content/js/ng-dialog.0.1.6.js",
                        "~/Content/js/underscore.1.5.0.js",
                        "~/Content/js/jquery.easyWizard.js",
                        "~/Content/js/bootstrap.js"));

并在@Scripts.Render("~/bundles/libraries")中将其称为_Layout,但我收到以下错误:

Uncaught ReferenceError: jQuery is not defined

并且Angular没有加载。

以下代码有效:

<script src="~/Content/js/jquery.1.10.2.js"></script>
<script src="~/Content/js/jquery.ui.1.10.3.js"></script>
<script src="~/Content/js/angular.js"></script>
<script src="~/Scripts/Angular/ng-grid-2.0.11.min.js"></script>
<script src="~/Content/js/ng-dialog.0.1.6.js"></script>
<script src="~/Content/js/underscore.1.5.0.js"></script>
<script src="~/Content/js/botstrap.js.js"></script>
<script src="~/Content/js/jquery.easyWizard.js"></script>

我哪里出错?

1 个答案:

答案 0 :(得分:1)

我相信当你在一个包中添加多个文件时,顺序可能不是你指定的顺序。为确保确切的订单,您必须创建自己的bundle orderer

更简单的方法是分离捆绑包,以便您可以在 cshtml 文件中按照确切的顺序指定它们。还有一些提示。在文件名中尽可能使用 {version} ,在获得文件的新版本时让生活更轻松,如果已经存在,则使用Bundle代替ScriptBundle目录中的缩小版本。它将使用它而不是再次运行minifier。

所以做这样的事情:

bundles.Add(new Bundle("~/bundles/jquery").Include(
                    "~/Scripts/jquery-{version}.js");

bundles.Add(new Bundle("~/bundles/jqueryui").Include(
                    "~/Scripts/jquery-ui-{version}.js"));
// etc...

然后在 _Layout.cshtml 文件中,首先指定~/bundles/jquery,然后按依赖顺序指定其他文件。