为什么要使用@ Scripts.Render(“〜/ bundles / jquery”)

时间:2012-08-30 08:16:55

标签: asp.net-mvc-4 asp.net-optimization

如何

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

不同于仅仅引用html这样的脚本

<script src="~/bundles/jquery.js" type="text/javascript"></script>

是否有任何性能提升?

2 个答案:

答案 0 :(得分:280)

捆绑就是将多个JavaScript或样式表文件压缩成单个文件,而无需任何格式化(也称为缩小),以节省带宽和加载页面的请求数。

例如,您可以创建自己的包:

bundles.Add(New ScriptBundle("~/bundles/mybundle").Include(
            "~/Resources/Core/Javascripts/jquery-1.7.1.min.js",
            "~/Resources/Core/Javascripts/jquery-ui-1.8.16.min.js",
            "~/Resources/Core/Javascripts/jquery.validate.min.js",
            "~/Resources/Core/Javascripts/jquery.validate.unobtrusive.min.js",
            "~/Resources/Core/Javascripts/jquery.unobtrusive-ajax.min.js",
            "~/Resources/Core/Javascripts/jquery-ui-timepicker-addon.js"))

并像这样呈现:

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

@Scripts.Render("~/bundles/mybundle")优于原始<script src="~/bundles/mybundle" />的另一个优势是@Scripts.Render()将尊重web.config调试设置:

  <system.web>
    <compilation debug="true|false" />

如果debug="true"那么它将为每个源脚本呈现单独的脚本标记,而不会有任何缩小。

对于样式表,您必须使用StyleBundle和@ Styles.Render()。

不是使用单个请求(使用脚本或链接标记)加载每个脚本或样式,而是将所有文件压缩为单个JavaScript或样式表文件并一起加载。

答案 1 :(得分:50)

您也可以使用:

@Scripts.RenderFormat("<script type=\"text/javascript\" src=\"{0}\"></script>", "~/bundles/mybundle")

在需要使用Charset,Type等的场景中指定输出的格式。