有没有理由在BundleConfig中有多个ScriptBundle包?

时间:2016-03-13 13:58:39

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

这里是默认的MVC5 App BundleConfig:

public class BundleConfig
{
    // For more information on bundling, visit http://go.microsoft.com/fwlink/?LinkId=301862
    public static void RegisterBundles(BundleCollection bundles)
    {
        bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
                    "~/Scripts/jquery-{version}.js"));

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

        // Use the development version of Modernizr to develop with and learn from. Then, when you're
        // ready for production, use the build tool at http://modernizr.com to pick only the tests you need.
        bundles.Add(new ScriptBundle("~/bundles/modernizr").Include(
                    "~/Scripts/modernizr-*"));

        bundles.Add(new ScriptBundle("~/bundles/bootstrap").Include(
                  "~/Scripts/bootstrap.js",
                  "~/Scripts/respond.js"));
    }
}

仅拥有一个捆绑包会不会简单得多,您需要包含所需的所有脚本?像这样:

public class BundleConfig
{
    // For more information on bundling, visit http://go.microsoft.com/fwlink/?LinkId=301862
    public static void RegisterBundles(BundleCollection bundles)
    {
        bundles.Add(new ScriptBundle("~/bundles/scripts").Include(
                    "~/Scripts/jquery-{version}.js",
                    "~/Scripts/jquery.validate*",
                    "~/Scripts/modernizr-*",
                    "~/Scripts/bootstrap.js",
                    "~/Scripts/respond.js"));
    }
}

或者,甚至更简单,像这样(在Script文件夹中只放置你需要的JS文件):

public class BundleConfig
{
    // For more information on bundling, visit http://go.microsoft.com/fwlink/?LinkId=301862
    public static void RegisterBundles(BundleCollection bundles)
    {
        bundles.Add(new ScriptBundle("~/bundles/scripts").Include("~/Scripts/*"));
    }
}

1 个答案:

答案 0 :(得分:5)

  

只有一个捆绑包,你需要包含所需的所有脚本,这不是更简单吗?

这可能会略微简化开发过程,因为您不需要查找要包含的相应bundle。但是让我们从另一个角度看待这个。

asp.net forum上,以下是:

  

捆绑和缩小是ASP.NET 4.5中可用于改进请求加载时间的两种技术。捆绑和缩小可以减少对服务器的请求数量并减少所请求资产(例如CSS和JavaScript)的大小,从而缩短加载时间。

所以我们捆绑以使事情更快地运作。如果您创建的页面包含不需要bootstrap.js的简单表单,该怎么办?如果你有兴趣加速一切,你为什么要加载呢?

最佳性能选项是将您可能需要的所有可能的js文件组合放在单独的包中。每个页面只有一个请求来获取它需要的所有js。然而,这种方式很难维持。

因此,您需要决定自己感兴趣的方面。