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

mon*_*tro 7 asp.net-mvc-4 bundling-and-minification asp.net-mvc-5

这里,默认的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"));
    }
}
Run Code Online (Sandbox Code Playgroud)

如果只有一个捆绑包,您将包含所需的所有脚本,这不是更简单吗?像这样:

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"));
    }
}
Run Code Online (Sandbox Code Playgroud)

或者,甚至更简单,就像这样(在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/*"));
    }
}
Run Code Online (Sandbox Code Playgroud)

Iva*_*nko 5

如果只有一个捆绑包,您将包含所需的所有脚本,这不是更简单吗?

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

asp.net论坛上,它有以下几点:

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

所以我们捆绑以使事情更快地运作.如果你已经创建了一个页面用一个简单的形式,其中没有bootstrap.js需要.如果你有兴趣加速一切,你为什么要加载呢?

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

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