ASP.NET MVC用Bundles压缩js文件,并让浏览器异步加载js

46 篇文章 1 订阅
25 篇文章 0 订阅


mvc默认的写法js引用(会自动压缩js文件):

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

Scripts.Render是asp.net mvc自身采用比较优化的压缩技术和缓存技术,将多个js压缩优化并且整合为1个体积较小的js,但对于外部使用来说,功能是不会出现任何区别的,从而提高了页面体验。而压缩和缓存的过程都是通过框架自动实现的,浏览器第二次访问时就会从缓存中读取

这种@Scripts.Render("~/freightAdd")写法是会根据webconfig设置的

<system.web>
    <compilation debug="true" targetFramework="4.5.2"/>

debug的值而生成是否压缩的js文件,true不会生成压缩的,false会生成压缩的,如果在Global.asax里面

BundleTable.EnableOptimizations = false; //开发调试时一般不开启,是否启用压缩

这里的false不会压缩,true会压缩,前提是页面必须这样写@Scripts.Render("~/freightAdd")


<script src="@Scripts.Url("~/freightAdd")" async defer></script>

<script src="@BundleTable.Bundles.ResolveBundleUrl("~/freightAdd",false)"  async defer></script>

这样的两种写法都不会因为设置是否压缩而改变,最后都是生成压缩的js,就是设置是否压缩对这两行引用无效


推荐写法:

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

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


还有其他写法(效果和上面的一样的):

<script src="@BundleTable.Bundles.ResolveBundleUrl("~/bundles/mybundle",false)"async defer></script>

这里的false表示不会生成后缀字符串(问号后面的),async defer表示在整个document解析完成是异步执行此js,可以提高渲染速度,此js被解析后生成的js引用如下:

<script src="/freightAdd" async defer></script>


还有种写法:

<script src="@Microsoft.Web.Optimization.BundleTable.Bundles.ResolveBundleUrl("~/bundles/mybundle")" type="text/javascript"></script>


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王焜棟琦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值