1

总之

打包和缩小 JavaScript 时,最好使用单个站点范围的 JS 包还是多个特定的包?

如果是后者,那么如何将这些捆绑包添加到每个视图(而不是布局)中,并且在调试模式下仍然让服务器返回单个非缩小 JS 文件?

详细地

我阅读了一篇非常有趣的文章,详细介绍了如何在 ASP.NET MVC3 Web 应用程序中使用 MVC4 框架中可用的捆绑和缩小:点击查看文章

在本文中,它描述了如何从布局页面添加指向特定捆绑包的链接:

Scripts.Render("~/bundles/MyBundle")

我可以看到这种方法非常适合创建站点范围的捆绑包。

但是,我不确定关于是否拥有单个站点范围的捆绑包或多个专业捆绑包的最佳实践是什么,我希望在这里得到建议。在我看来,单个站点范围的捆绑包的优缺点是:

  • 缺点:
    • 减慢主页的初始加载(即使最小化)
    • 可能更难确保没有 JS 冲突。
  • 优点:
    • 所有后续页面都没有新内容可下载
    • 只需管理一个捆绑包

好的 - 假设最佳实践是多个捆绑包......在这种情况下,我看到将捆绑包添加到布局页面是多么容易,但是特定视图呢?每个 View 都应该注册它需要的 JS(在脚本部分中),然后将其添加到页面主体的底部,以便最后加载(与添加到 Header 以便它首先加载的 CSS 不同)。我使用以下代码进行了管理,但这条路线的问题是 JS总是作为单个缩小文件出现,这在调试模式下没有多大帮助。

@<script src="@Scripts.Url("~/bundles/myBundle")"></script>

提前谢谢了

格里夫

4

1 回答 1

2

你可以两者都做。为了呈现专门的包,你可以这样做:

在 _Layout.cshtml 中创建一个脚本部分。我通常把我的放在页面底部,就在结束正文标记之前,但你也可以把它放在头部:

@RenderSection("scripts", required: false)

然后,在您看来,您可以像这样定义该部分:

@section scripts {

    @Scripts.Render("~/bundles/myspecialuniquebundlejustforthisview")

}

BundleTable.EnableOptimizations = true当您这样做时,只有在您使用 debug="false" 编译或在调试期间显式设置时,才会压缩和缩小捆绑包。

于 2013-01-23T18:01:24.757 回答