我在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")
}
我的问题是,如果这是正确的,或者有更好的解决方案。
答案 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