将所有脚本和项目的CSS捆绑在一起

时间:2017-03-27 09:30:51

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

我在MVC项目中编写了许多脚本和CSS。

我正在使用捆绑和缩小,我知道我可以将它们全部捆绑在一起这样:

bundles.Add(new StyleBundle("~/Content/site/").Include("~/Content/site/*.css"));
bundles.Add(new ScriptBundle("~/bundles/site").Include("~/Scripts/site/*.js"));

问题是我不想Render所有脚本和css在一起,我需要在每个View中有一两个,我知道我可以手动注册每个脚本/ css然后我将能够在每个视图中单独render个:

bundles.Add(new ScriptBundle("~/bundles/script1").Include("~/Scripts/site/script1.js"));
bundles.Add(new ScriptBundle("~/bundles/script2").Include("~/Scripts/site/script2.js"));

然后在一个视图中:

@section scripts{
    @Scripts.Render("~/bundles/script1")
}

在第二个:

@section scripts{
    @Scripts.Render("~/bundles/script2")
}

我的问题是,如果这是正确的,或者有更好的解决方案。

1 个答案:

答案 0 :(得分:4)

是的,构建为视图定制的多个包是正确的。

请注意,您可以向捆绑包添加多个特定脚本/样式:

var commonJsBundle = new ScriptBundle("~/bundles/Common/Js");
commonJsBundle.Include("~/Scripts/jquery-{version}.js");
commonJsBundle.Include("~/Scripts/jquery-ui-{version}.js");

@Scripts.Render("~/bundles/Common/Js")

因此,您不需要为每个单独的脚本创建一个包,而是将页面(或区域)的所有自定义脚本捆绑在一起。

PS:正如Stefan所指出的,在下载时浏览器支持的捆绑包大小和并行连接数之间需要权衡。因此,使用许多小包会使页面加载速度变慢。 Maximum concurrent connections to the same domain for browsers