捆绑和缩小JavaScript时,拥有单个站点范围的JS捆绑包或多个特定捆绑包是不错的做法?
如果是后者,那么如何将这些bundle添加到每个View(而不是layout)中,并且仍然让服务器在调试模式下返回各个非缩小的JS文件?
我读了一篇非常有趣的文章,详细介绍了如何在ASP.NET MVC3 Web应用程序中使用MVC4框架中提供的捆绑和缩小:click for article
在本文中,它介绍了如何从布局页面添加指向特定包的链接:
Scripts.Render("~/bundles/MyBundle")
我可以看到这种方法对于创建网站范围的捆绑包非常有用。
但是,我不确定最佳做法是关于是否有一个网站范围的捆绑,或多个专业捆绑,我很感激这里的建议。正如我所看到的,单个站点范围的捆绑包的优缺点是:
好的 - 假设最佳实践证明是多个捆绑包......就是这样,我看到将一个捆绑包添加到布局页面是多么容易,但具体的视图怎么样?每个View应该注册它所需的JS(在脚本部分中),然后将其添加到页面主体的底部,以便最后加载(与您添加到Header的CSS不同,以便首先加载)。我使用以下代码管理了这个,但是这条路线的问题是JS 总是作为单个缩小文件出现,这在调试模式下没有用。
@<script src="@Scripts.Url("~/bundles/myBundle")"></script>
非常感谢提前
格里夫
答案 0 :(得分:2)
你可以做到这两点。为了呈现专用包,您可以这样做:
在_Layout.cshtml中创建一个脚本部分。我通常把它放在关闭身体标签之前的页面底部,但你也可以将它放在头部:
@RenderSection("scripts", required: false)
然后,在您的视图中,您可以像这样定义部分:
@section scripts {
@Scripts.Render("~/bundles/myspecialuniquebundlejustforthisview")
}
当您这样做时,只有在使用debug =“false”进行编译或在调试时显式设置BundleTable.EnableOptimizations = true
时,才会压缩和缩小包。