javascript - asp.net mvc 3 - 单独 View 的专门 bundle 和缩小

标签 javascript asp.net-mvc asp.net-mvc-3 asp.net-mvc-4 bundle

总结

在 bundle 和缩小 JavaScript 时,使用单个站点范围的 JS bundle 还是多个特定的 bundle 是好的做法?

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

详细说明

我读了一篇非常有趣的文章,详细介绍了如何在 ASP.NET MVC3 Web 应用程序中使用 MVC4 框架中可用的 bundle 和缩小:click for article

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

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

而且我可以看到这种方法对于创建站点范围的 bundle 有何好处。

但是,关于是拥有单个站点范围的 bundle 还是多个专门的 bundle ,我不确定最佳实践是什么,我希望得到您的建议。在我看来,单个站点范围的 bundle 的优缺点是:

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

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

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

提前致谢

格里夫

最佳答案

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

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

@RenderSection("scripts", required: false)

然后,在您的 View 中,您可以像这样定义该部分:

@section scripts {

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

}

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

关于javascript - asp.net mvc 3 - 单独 View 的专门 bundle 和缩小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14444853/

相关文章:

asp.net - MVC4 上 _layout.cshtml 的@model?

javascript - 将设置存储在 Javascript Cookie 中

javascript - 从 Bootstrap 下拉列表中获取选定的选项

javascript - 如何从Facebook的喜欢按钮 Conceal 发送按钮但不 Conceal 添加评论并发送到Facebook框架

javascript - 在单元测试中禁用控制台的更好方法

c# - Styles.Render 在 View 中

ASP.NET MVC : Display a link to another action

asp.net - MVC 3 Razor - Html 列表中的下拉列表

ASP.Net MVC 帮助重构

c# - MVC WebGrid 动态内容